diff --git a/Makefile b/Makefile index 1d7b49433f..f5e5ef2ce0 100644 --- a/Makefile +++ b/Makefile @@ -546,33 +546,33 @@ docker-isolated: else \ docker exec "tools_isolated_1" bash -c "mkdir -p /root/.ssh && rm -f /root/.ssh/authorized_keys && echo $$(docker exec -t tools_awx_1 cat /root/.ssh/id_rsa.pub) >> /root/.ssh/authorized_keys"; \ fi - TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/docker-isolated-override.yml up + CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/docker-isolated-override.yml up # Docker Compose Development environment docker-compose: docker-auth - TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml up --no-recreate awx + CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml up --no-recreate awx docker-compose-cluster: docker-auth - TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose-cluster.yml up + CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose-cluster.yml up docker-compose-test: docker-auth - cd tools && TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /bin/bash + cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /bin/bash docker-compose-runtest: - cd tools && TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --user=$(shell id -u) --rm --service-ports awx /start_tests.sh + cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /start_tests.sh docker-compose-build-swagger: - cd tools && TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --user=$(shell id -u) --rm --service-ports awx /start_tests.sh swagger + cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /start_tests.sh swagger docker-compose-clean: - cd tools && TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm -w /awx_devel --service-ports awx make clean + cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm -w /awx_devel --service-ports awx make clean cd tools && TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose rm -sf docker-compose-build: awx-devel-build # Base development image build awx-devel-build: - docker build -t ansible/awx_devel --build-arg UID=$(shell id -u) -f tools/docker-compose/Dockerfile . + docker build -t ansible/awx_devel -f tools/docker-compose/Dockerfile . docker tag ansible/awx_devel $(DEV_DOCKER_TAG_BASE)/awx_devel:$(COMPOSE_TAG) #docker push $(DEV_DOCKER_TAG_BASE)/awx_devel:$(COMPOSE_TAG) @@ -592,7 +592,7 @@ docker-refresh: docker-clean docker-compose # Docker Development Environment with Elastic Stack Connected docker-compose-elk: docker-auth - TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/elastic/docker-compose.logstash-link.yml -f tools/elastic/docker-compose.elastic-override.yml up --no-recreate + CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/elastic/docker-compose.logstash-link.yml -f tools/elastic/docker-compose.elastic-override.yml up --no-recreate docker-compose-cluster-elk: docker-auth TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose-cluster.yml -f tools/elastic/docker-compose.logstash-link-cluster.yml -f tools/elastic/docker-compose.elastic-override.yml up --no-recreate diff --git a/tools/docker-compose.yml b/tools/docker-compose.yml index 5fbb610631..021f890e52 100644 --- a/tools/docker-compose.yml +++ b/tools/docker-compose.yml @@ -2,6 +2,7 @@ version: '2' services: # Primary AWX Development Container awx: + user: ${CURRENT_UID} image: ${DEV_DOCKER_TAG_BASE}/awx_devel:${TAG} hostname: awx environment: diff --git a/tools/docker-compose/Dockerfile b/tools/docker-compose/Dockerfile index 9244c26e1f..5c84245ba1 100644 --- a/tools/docker-compose/Dockerfile +++ b/tools/docker-compose/Dockerfile @@ -59,10 +59,10 @@ EXPOSE 8043 8013 8080 22 ENTRYPOINT ["/tini", "--"] CMD /start_development.sh -RUN touch /venv/awx/lib/python2.7/site-packages/awx.egg-link -RUN chmod g+rwx /venv/awx/lib/python2.7/site-packages/awx.egg-link +# Pre-create things that we need to write to +RUN for dir in /var/lib/awx/ /projects /.ansible /var/log/nginx /var/lib/nginx /.local; \ + do mkdir -p $dir; chmod -R g+rwx $dir; chgrp -R root $dir; done -RUN chmod g+w /etc/passwd -RUN mkdir -p /projects && chmod g+w /projects - -USER ${UID} +RUN for file in /etc/passwd /supervisor.conf \ + /venv/awx/lib/python2.7/site-packages/awx.egg-link /var/run/nginx.pid; \ + do touch $file; chmod -R g+rwx $file; chgrp -R root $file; done diff --git a/tools/docker-compose/bootstrap_development.sh b/tools/docker-compose/bootstrap_development.sh index b8cd8521dc..0a4d27ee0b 100755 --- a/tools/docker-compose/bootstrap_development.sh +++ b/tools/docker-compose/bootstrap_development.sh @@ -1,6 +1,12 @@ #!/bin/bash set +x +if [ `id -u` -ge 500 ] || [ -z "${CURRENT_UID}" ]; then + 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/nginx.conf b/tools/docker-compose/nginx.conf index 9c9b7510e1..83bded03e2 100644 --- a/tools/docker-compose/nginx.conf +++ b/tools/docker-compose/nginx.conf @@ -1,4 +1,3 @@ -user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; diff --git a/tools/docker-compose/start_development.sh b/tools/docker-compose/start_development.sh index 36c5628b60..b6455de131 100755 --- a/tools/docker-compose/start_development.sh +++ b/tools/docker-compose/start_development.sh @@ -1,12 +1,6 @@ #!/bin/bash set +x -if [ `id -u` -ge 500 ]; then - echo "awx:x:`id -u`:`id -g`:,,,:/tmp:/bin/bash" >> /tmp/passwd - cat /tmp/passwd > /etc/passwd - rm /tmp/passwd -fi - /bootstrap_development.sh cd /awx_devel diff --git a/tools/docker-compose/start_tests.sh b/tools/docker-compose/start_tests.sh index 4ca74743fb..627d9be111 100755 --- a/tools/docker-compose/start_tests.sh +++ b/tools/docker-compose/start_tests.sh @@ -1,7 +1,7 @@ #!/bin/bash set +x -if [ `id -u` -ge 500 ]; then +if [ `id -u` -ge 500 ] || [ -z "${CURRENT_UID}" ]; then echo "awx:x:`id -u`:`id -g`:,,,:/tmp:/bin/bash" >> /tmp/passwd cat /tmp/passwd > /etc/passwd rm /tmp/passwd