Files
docker-php-fpm/tests/prod/05-test-env-forward_ports_to_localhost.sh
2022-03-25 00:50:11 +01:00

94 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
set -u
set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}"
ARCH="${2}"
VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090
. "${CWD}/../.lib.sh"
############################################################
# Tests
############################################################
###
### Socat forwarding
###
CONTAINER="devilbox/mysql:mysql-8.0"
# Pull Container
print_h2 "Pulling MySQL"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
# Start mysql container
print_h2 "Starting MySQL"
if ! name_mysql="$( docker_run "${CONTAINER}" "${ARCH}" "-e MYSQL_ALLOW_EMPTY_PASSWORD=yes" )"; then
exit 1
fi
run "sleep 60"
# Start PHP-FPM
print_h2 "Start PHP-FPM"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e FORWARD_PORTS_TO_LOCALHOST=3306:${name_mysql}:3306 --link ${name_mysql}" )"; then
docker_stop "${name_mysql}" || true
exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
print_h2 "Ensure forwarding info is present in docker logs"
if ! run "docker logs ${name} 2>&1 | grep 'Forwarding ${name_mysql}:3306'"; then
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Only work container has mysql binary installed
if [ "${FLAVOUR}" = "work" ]; then
print_h2 "Test connectivity against hostname"
if ! docker_exec "${name}" "mysql --user=root --password= --host=${name_mysql} -e 'SHOW DATABASES;'"; then
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
print_h2 "Test connectivity against 127.0.0.1"
if ! docker_exec "${name}" "mysql --user=root --password= --host=127.0.0.1 -e 'SHOW DATABASES;'"; then
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
fi
print_h2 "Cleanup"
docker_stop "${name_mysql}"
docker_stop "${name}"