blob: c94e415bf2795217ac312c54c1cdbcba052abb11 [file] [log] [blame]
<#--
~ 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.
-->
<#--
The latest docker compose use "-" as separator rather than '_' when generating container name
Use COMPOSE_COMPATIBILITY env to keep compatibility
Refer to https://github.com/docker/compose/commit/150fd4b8cfa39726e68c12fc0fd45ac4e0f20c5f
-->
export COMPOSE_COMPATIBILITY=1
compose_file="${docker_compose_file}"
project_name=$(echo "${build_id}" |sed -e "s/\.//g" |awk '{print tolower($0)}')
docker_container_name="${docker_container_name}_1"
<#noparse>
container_name="${project_name}_${docker_container_name}"
# Diagnostic: log docker compose version
docker compose version >&2 || true
echo "=== Starting docker compose ===" >&2
compose_output=$(docker compose -p ${project_name} -f ${compose_file} up -d 2>&1)
compose_exit=$?
echo "${compose_output}" >&2
if [[ ${compose_exit} -ne 0 ]]; then
echo "docker compose up exited with code ${compose_exit}" >&2
fi
container_id=`docker ps -qf "name=${container_name}"`
if [[ -z "${container_id}" ]]; then
echo "docker startup failure! container_name=${container_name} not found." >&2
echo "=== docker ps -a ===" >&2
docker ps -a >&2 || true
echo "=== docker compose logs ===" >&2
docker compose -p ${project_name} -f ${compose_file} logs 2>&1 >&2 || true
# Create container.log with diagnostic info
mkdir -p ${SCENARIO_HOME}/logs
{
echo "=== CONTAINER STARTUP FAILURE ==="
echo "container_name=${container_name} was not found by docker ps"
echo "compose_exit_code=${compose_exit}"
echo "compose_output:"
echo "${compose_output}"
echo "=== docker ps -a ==="
docker ps -a 2>&1 || true
echo "=== docker compose logs ==="
docker compose -p ${project_name} -f ${compose_file} logs 2>&1 || true
} >${SCENARIO_HOME}/logs/container.log
docker compose -p ${project_name} -f ${compose_file} kill 2>/dev/null || true
docker compose -p ${project_name} -f ${compose_file} rm -f 2>/dev/null || true
status=1
else
status=`docker wait ${container_id}`
[[ $status -ne 0 ]] && docker logs ${container_id} >&2
# Recreate logs dir in case the container removed it via volume mount
mkdir -p ${SCENARIO_HOME}/logs
docker logs ${container_id} >${SCENARIO_HOME}/logs/container.log
docker compose -p ${project_name} -f ${compose_file} kill
docker compose -p ${project_name} -f ${compose_file} rm -f
fi
</#noparse>
${removeImagesScript}