| <#-- |
| ~ 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> |