From 7d8a910be7e7de438ccfb9180008ebb199f3dfcc Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Fri, 10 May 2019 10:14:51 -0400 Subject: [PATCH] Improve dev environment init process This ensures that /etc/passwd is always written, regardless of how the container starts. --- tools/docker-compose.yml | 1 + tools/docker-compose/Dockerfile | 17 ++++++++--------- tools/docker-compose/bootstrap_development.sh | 7 ------- tools/docker-compose/entrypoint.sh | 14 ++++++++++++++ tools/docker-compose/start_development.sh | 2 +- 5 files changed, 24 insertions(+), 17 deletions(-) create mode 100755 tools/docker-compose/entrypoint.sh diff --git a/tools/docker-compose.yml b/tools/docker-compose.yml index 554b7beecd..790089a6f5 100644 --- a/tools/docker-compose.yml +++ b/tools/docker-compose.yml @@ -6,6 +6,7 @@ services: image: ${DEV_DOCKER_TAG_BASE}/awx_devel:${TAG} container_name: tools_awx_1 hostname: awx + command: /start_development.sh environment: CURRENT_UID: RABBITMQ_HOST: rabbitmq diff --git a/tools/docker-compose/Dockerfile b/tools/docker-compose/Dockerfile index f75288594e..cf36c8545e 100644 --- a/tools/docker-compose/Dockerfile +++ b/tools/docker-compose/Dockerfile @@ -64,12 +64,6 @@ ADD tools/docker-compose/awx.egg-link /tmp/awx.egg-link ADD tools/docker-compose/awx-manage /usr/local/bin/awx-manage ADD tools/docker-compose/awx.egg-info /tmp/awx.egg-info -RUN ln -Ffs /awx_devel/tools/docker-compose/nginx.conf /etc/nginx/nginx.conf -RUN ln -Ffs /awx_devel/tools/docker-compose/nginx.vh.default.conf /etc/nginx/conf.d/nginx.vh.default.conf -RUN ln -s /awx_devel/tools/docker-compose/start_development.sh /start_development.sh -RUN ln -s /awx_devel/tools/docker-compose/start_tests.sh /start_tests.sh -RUN ln -s /awx_devel/tools/docker-compose/bootstrap_development.sh /bootstrap_development.sh - RUN openssl req -nodes -newkey rsa:2048 -keyout /etc/nginx/nginx.key -out /etc/nginx/nginx.csr -subj "/C=US/ST=North Carolina/L=Durham/O=Ansible/OU=AWX Development/CN=awx.localhost" RUN openssl x509 -req -days 365 -in /etc/nginx/nginx.csr -signkey /etc/nginx/nginx.key -out /etc/nginx/nginx.crt @@ -118,12 +112,17 @@ ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -WORKDIR / +ADD tools/docker-compose/nginx.conf /etc/nginx/nginx.conf +ADD tools/docker-compose/nginx.vh.default.conf /etc/nginx/conf.d/nginx.vh.default.conf +ADD tools/docker-compose/start_development.sh /start_development.sh +ADD tools/docker-compose/start_tests.sh /start_tests.sh +ADD tools/docker-compose/bootstrap_development.sh /bootstrap_development.sh EXPOSE 8043 8013 8080 22 -ENTRYPOINT ["/tini", "--"] -CMD /start_development.sh +ADD tools/docker-compose/entrypoint.sh / +ENTRYPOINT ["/entrypoint.sh"] +CMD ["/bin/bash"] # Pre-create things that we need to write to RUN for dir in /var/lib/awx/ /var/log/tower/ /projects /.ansible /var/log/nginx /var/lib/nginx /.local; \ diff --git a/tools/docker-compose/bootstrap_development.sh b/tools/docker-compose/bootstrap_development.sh index 93087e3ad9..3909ffdd4e 100755 --- a/tools/docker-compose/bootstrap_development.sh +++ b/tools/docker-compose/bootstrap_development.sh @@ -1,13 +1,6 @@ #!/bin/bash set +x -if [ `id -u` -ge 500 ] || [ -z "${CURRENT_UID}" ]; then - echo "root:x:0:0:root:/root:/bin/bash" > /tmp/password - echo "awx:x:`id -u`:`id -g`:,,,:/tmp:/bin/bash" >> /tmp/passwd - cat /tmp/passwd > /etc/passwd - rm /tmp/passwd -fi - # Wait for the databases to come up ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=postgres port=5432" all ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=memcached port=11211" all diff --git a/tools/docker-compose/entrypoint.sh b/tools/docker-compose/entrypoint.sh new file mode 100755 index 0000000000..8ed9bf2abd --- /dev/null +++ b/tools/docker-compose/entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ `id -u` -ge 500 ] || [ -z "${CURRENT_UID}" ]; then + + cat << EOF > /tmp/passwd +root:x:0:0:root:/root:/bin/bash +awx:x:`id -u`:`id -g`:,,,:/tmp:/bin/bash +EOF + + cat /tmp/passwd > /etc/passwd + rm /tmp/passwd +fi + +exec $@ diff --git a/tools/docker-compose/start_development.sh b/tools/docker-compose/start_development.sh index c39b9f507f..3fd18f8aca 100755 --- a/tools/docker-compose/start_development.sh +++ b/tools/docker-compose/start_development.sh @@ -5,4 +5,4 @@ set +x cd /awx_devel # Start the services -make supervisor +exec /tini -- make supervisor