| <#-- | |
| ~ Licensed to the Apache Software Foundation (ASF) under one or more | |
| ~ contributor license agreements. See the NOTICE file distributed with | |
| ~ this work for additional information regarding copyright ownership. | |
| ~ The ASF licenses this file to You under the Apache License, Version 2.0 | |
| ~ (the "License"); you may not use this file except in compliance with | |
| ~ the License. You may obtain a copy of the License at | |
| ~ | |
| ~ http://www.apache.org/licenses/LICENSE-2.0 | |
| ~ | |
| ~ Unless required by applicable law or agreed to in writing, software | |
| ~ distributed under the License is distributed on an "AS IS" BASIS, | |
| ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| ~ See the License for the specific language governing permissions and | |
| ~ limitations under the License. | |
| --> | |
| docker run -d \ | |
| --memory=1024m \ | |
| --name ${docker_container_name} \ | |
| --env SCENARIO_NAME=${scenario_name} \ | |
| --env SCENARIO_VERSION=${scenario_version} \ | |
| --env SCENARIO_SUPPORT_FRAMEWORK=${scenario_name} \ | |
| <#if start_script??> | |
| --env SCENARIO_START_SCRIPT=${start_script} \ | |
| </#if> | |
| --env SCENARIO_ENTRY_SERVICE=${entry_service} \ | |
| --env SCENARIO_HEALTH_CHECK_URL=${health_check} \ | |
| --env SCENARIO_EXTEND_ENTRY_HEADER=${extend_entry_header} \ | |
| <#if catalina_opts??> | |
| --env CATALINA_OPTS=${catalina_opts} \ | |
| </#if> | |
| <#if debug_mode??> | |
| --env DEBUG_MODE=${debug_mode} \ | |
| </#if> | |
| <#if environments??> | |
| <#list environments as env> | |
| --env ${env} \ | |
| </#list> | |
| </#if> | |
| -v ${agent_home}:/usr/local/skywalking/scenario/agent \ | |
| -v ${scenario_home}:/usr/local/skywalking/scenario \ | |
| -v ${jacoco_home}:/jacoco \ | |
| ${docker_image_name}:${docker_image_version} | |
| sleep 3 | |
| container_name=`docker ps -aqf "name=${docker_container_name}"` | |
| <#noparse> | |
| if [[ -z ${container_name} ]]; then | |
| echo "docker startup failure!" >&2 | |
| echo "=== docker ps -a ===" >&2 | |
| docker ps -a >&2 || true | |
| # Create container.log with diagnostic info | |
| mkdir -p ${SCENARIO_HOME}/logs | |
| { | |
| echo "=== CONTAINER STARTUP FAILURE ===" | |
| echo "Container not found by docker ps" | |
| echo "=== docker ps -a ===" | |
| docker ps -a 2>&1 || true | |
| } >${SCENARIO_HOME}/logs/container.log | |
| status=1 | |
| else | |
| status=$(docker wait ${container_name}) | |
| [[ $status -ne 0 ]] && docker logs ${container_name} >&2 | |
| # Recreate logs dir in case the container removed it via volume mount | |
| mkdir -p ${SCENARIO_HOME}/logs | |
| docker logs ${container_name} >${SCENARIO_HOME}/logs/container.log | |
| docker container rm -f $container_name | |
| fi | |
| </#noparse> |