3 # @todo support getting the 2 vars as cli args as well as via env vars?
9 # Valid values: 'default', 5.6, 7.0 .. 7.4, 8.0
10 export PHP_VERSION=${PHP_VERSION:-default}
11 # Valid values: precise (12), trusty (14), xenial (16), bionic (18), focal (20)
12 # We default to the same version we use on Travis
13 export UBUNTU_VERSION=${UBUNTU_VERSION:-xenial}
15 IMAGE_NAME=phpxmlrpc:${UBUNTU_VERSION}-${PHP_VERSION}
16 CONTAINER_NAME=phpxmlrpc_${UBUNTU_VERSION}_${PHP_VERSION}
17 ROOT_DIR="$(dirname -- "$(dirname -- "$(dirname -- "$(readlink -f "$0")")")")"
19 cd "$(dirname -- "$(readlink -f "$0")")"
22 printf "Usage: vm.sh [OPTIONS] ACTION [OPTARGS]
24 Manages the Test Environment Docker Stack
27 build build or rebuild the containers and set up the test env
28 enter enter the test container
29 #exec \$cmd execute a single shell command in the test container
30 #runtests [\$suite] execute the test suite using the test container (or a single test scenario eg. Tests/1ParsingBugsTest.php)
31 start start the containers
42 docker build --build-arg PHP_VERSION --build-arg UBUNTU_VERSION -t "${IMAGE_NAME}" .
43 if docker inspect "${CONTAINER_NAME}" >/dev/null 2>/dev/null; then
44 docker rm "${CONTAINER_NAME}"
47 -p 80:80 -p 443:443 -p 8080:8080 \
48 --name "${CONTAINER_NAME}" \
49 --env CONTAINER_USER_UID=$(id -u) --env CONTAINER_USER_GID=$(id -g) --env TESTS_ROOT_DIR=/home/test \
50 --env HTTPSERVER=localhost \
51 --env HTTPURI=/demo/server/server.php \
52 --env HTTPSSERVER=localhost \
53 --env HTTPSURI=/demo/server/server.php \
54 --env PROXYSERVER=localhost:8080 \
55 --env HTTPSVERIFYHOST=0 \
56 --env HTTPSIGNOREPEER=1 \
59 -v "${ROOT_DIR}":/home/test "${IMAGE_NAME}"
63 if docker inspect "${CONTAINER_NAME}" >/dev/null 2>/dev/null; then
64 docker start "${CONTAINER_NAME}"
71 if docker inspect "${CONTAINER_NAME}" >/dev/null 2>/dev/null; then
72 docker stop "${CONTAINER_NAME}"
84 docker rm "${CONTAINER_NAME}"
85 docker rmi "${IMAGE_NAME}"
89 docker exec -it "${CONTAINER_NAME}" su test
116 docker ps --filter "name=${CONTAINER_NAME}"
119 diff | inspect | kill | logs | pause | port | stats | top | unpause)
120 docker container "${ACTION}" "${CONTAINER_NAME}"
124 printf "\n\e[31mERROR:\e[0m unknown action '${ACTION}'\n\n" >&2