713f77176e
In order to reuse the test server to the external modules, it is much easier to share the common configurations (scripts) and test data via Dockerfile. In addition, the external module can create more layers depending on their needs. Therefore, supporting multi-stage builds is needed. The disadvantage is that the docker-compose needs to re-build the images every time. However, it is just a one-time effort. If the Dockerfile doesn't get changed, the extra build time can be ignored. Because of multi-stage builds, the test server will keep a Dockerfile at least. Therefore, the volume sharing is no more needed. The test data of a service can be added into the images by using COPY/ADD commands. NOTE: This patch relies on docker-compose v1.21.0 (docker-compose build now supports the use of Dockerfile from outside the build context). Change-Id: Ib3f6a5fcf6979732ae8a40a494a1360fca4ac7bf Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
158 lines
5.4 KiB
YAML
158 lines
5.4 KiB
YAML
version: '3.4'
|
|
|
|
# The tag of images is used by docker compose file to launch the corresponding
|
|
# docker containers. The value of tag comes from the provisioning script
|
|
# (coin/provisioning/.../testserver/docker_testserver.sh). The script gets SHA-1
|
|
# of each server context as the tag of docker images. If one of the server
|
|
# contexts gets changes, please make sure to update this compose file as well.
|
|
# You can run command 'docker images' to list all the tag of test server images.
|
|
# For example:
|
|
# REPOSITORY TAG
|
|
# qt-test-server-apache2 537fe302f61851d1663f41495230d8e3554a4a13
|
|
|
|
services:
|
|
apache2:
|
|
container_name: qt-test-server-apache2
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: apache2
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-apache2:537fe302f61851d1663f41495230d8e3554a4a13
|
|
shareDir: ./common
|
|
serviceDir: ./apache2
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: [service/ssl.sh, service/apache2.sh]
|
|
|
|
squid:
|
|
container_name: qt-test-server-squid
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: squid
|
|
depends_on:
|
|
- apache2
|
|
external_links:
|
|
- apache2:apache2.${TEST_DOMAIN}
|
|
- cyrus:cyrus.${TEST_DOMAIN}
|
|
- iptables:iptables.${TEST_DOMAIN}
|
|
- vsftpd:vsftpd.${TEST_DOMAIN}
|
|
- echo:echo.${TEST_DOMAIN}
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-squid:9c32f41b19aca3d778733c4d8fb0ecc5955e893c
|
|
shareDir: ./common
|
|
serviceDir: ./squid
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: service/squid.sh
|
|
|
|
vsftpd:
|
|
container_name: qt-test-server-vsftpd
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: vsftpd
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-vsftpd:f3a9c8d793a77cc007c0e4e481bec01f9e3eeb7e
|
|
shareDir: ./common
|
|
serviceDir: ./vsftpd
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: service/vsftpd.sh
|
|
|
|
ftp-proxy:
|
|
container_name: qt-test-server-ftp-proxy
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: ftp-proxy
|
|
depends_on:
|
|
- vsftpd
|
|
external_links:
|
|
- vsftpd:vsftpd.${TEST_DOMAIN}
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-ftp-proxy:d7de8b28392d173db512a558ccc84ead8bece2ae
|
|
shareDir: ./common
|
|
serviceDir: ./ftp-proxy
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: service/ftp-proxy.sh
|
|
|
|
danted:
|
|
container_name: qt-test-server-danted
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: danted
|
|
depends_on:
|
|
- apache2
|
|
- vsftpd
|
|
- ftp-proxy
|
|
external_links:
|
|
- apache2:apache2.${TEST_DOMAIN}
|
|
- vsftpd:vsftpd.${TEST_DOMAIN}
|
|
- ftp-proxy:ftp-proxy.${TEST_DOMAIN}
|
|
- cyrus:cyrus.${TEST_DOMAIN}
|
|
- echo:echo.${TEST_DOMAIN}
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-danted:35607f9b790524cf9690c7d12a9a401696b7b6b5
|
|
shareDir: ./common
|
|
serviceDir: ./danted
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: service/danted.sh
|
|
|
|
cyrus:
|
|
container_name: qt-test-server-cyrus
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: cyrus
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-cyrus:c8d72754abc0e501afd624ce838e4df35505abc9
|
|
shareDir: ./common
|
|
serviceDir: ./cyrus
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: [service/ssl.sh, service/cyrus.sh]
|
|
|
|
iptables:
|
|
container_name: qt-test-server-iptables
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: iptables
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-iptables:cb7a8bd6d28602085a88c8ced7d67e28e75781e2
|
|
shareDir: ./common
|
|
serviceDir: ./iptables
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: service/iptables.sh
|
|
cap_add:
|
|
- NET_ADMIN
|
|
- NET_RAW
|
|
|
|
echo:
|
|
container_name: qt-test-server-echo
|
|
domainname: ${TEST_DOMAIN}
|
|
hostname: echo
|
|
build:
|
|
context: .
|
|
dockerfile: ${SHARED_DATA}/Dockerfile
|
|
args:
|
|
provisioningImage: qt-test-server-echo:b29ad409e746a834c1055fd0f7a55fd5056da6ea
|
|
shareDir: ./common
|
|
serviceDir: ./echo
|
|
test_domain: ${TEST_DOMAIN}
|
|
entrypoint: service/startup.sh
|
|
command: service/echo.sh
|