From 588da5d1a281ce405827e70ee798b5b145102173 Mon Sep 17 00:00:00 2001 From: kyle-verhoog Date: Sat, 31 Oct 2020 05:04:24 -0400 Subject: [PATCH] dc: use extends instead of composition --- .github/workflows/cd.yml | 26 ++++------------- common.yml | 36 ++++++++++++++++++++++++ docker-compose.override.yml.example | 7 ----- docker-compose.yml | 43 ++++++++++------------------- prod.yml | 10 ++++++- staging.yml | 10 ++++++- 6 files changed, 75 insertions(+), 57 deletions(-) create mode 100644 common.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 38179bc..ed1163d 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -14,10 +14,10 @@ jobs: run: docker login -u publisher -p ${{ secrets.GHCR_TOKEN }} ghcr.io - name: build images - run: docker-compose -f docker-compose.yml -f prod.yml build + run: docker-compose -f prod.yml build - name: publish to registry - run: docker-compose -f docker-compose.yml -f prod.yml push + run: docker-compose -f prod.yml push - name: deploy to swarm run: | @@ -27,21 +27,7 @@ jobs: eval $(ssh-agent) ssh-add "$HOME/.ssh/docker" echo "crossroadsajax.church $SSH_KNOWN_HOST" >> ~/.ssh/known_hosts - docker --log-level debug --host "ssh://kyle@crossroadsajax.church" stack deploy -c docker-compose.yml -c prod.yml --with-registry-auth prod - shell: bash - env: - SSH_PRIV_KEY: ${{ secrets.DOCKER_SSH_PRIVATE_KEY }} - SSH_KNOWN_HOST: ${{ secrets.DOCKER_SSH_PUBLIC_KEY }} - - - name: deploy to swarm - run: | - mkdir -p "$HOME/.ssh" - echo "$SSH_PRIV_KEY" > "$HOME/.ssh/docker" - chmod 600 "$HOME/.ssh/docker" - eval $(ssh-agent) - ssh-add "$HOME/.ssh/docker" - echo "crossroadsajax.church $SSH_KNOWN_HOST" >> ~/.ssh/known_hosts - docker --log-level debug --host "ssh://kyle@crossroadsajax.church" stack deploy -c docker-compose.yml -c prod.yml --with-registry-auth prod + docker --host "ssh://kyle@crossroadsajax.church" stack deploy -c prod.yml --with-registry-auth prod shell: bash env: SSH_PRIV_KEY: ${{ secrets.DOCKER_SSH_PRIVATE_KEY }} @@ -58,10 +44,10 @@ jobs: run: docker login -u publisher -p ${{ secrets.GHCR_TOKEN }} ghcr.io - name: build images - run: docker-compose -f docker-compose.yml -f staging.yml build + run: docker-compose -f staging.yml build - name: publish to registry - run: docker-compose -f docker-compose.yml -f staging.yml push + run: docker-compose -f staging.yml push - name: deploy to swarm run: | @@ -71,7 +57,7 @@ jobs: eval $(ssh-agent) ssh-add "$HOME/.ssh/docker" echo "crossroadsajax.church $SSH_KNOWN_HOST" >> ~/.ssh/known_hosts - docker --log-level debug --host "ssh://kyle@crossroadsajax.church" stack deploy -c docker-compose.yml -c staging.yml --with-registry-auth staging + docker --host "ssh://kyle@crossroadsajax.church" stack deploy -c staging.yml --with-registry-auth staging shell: bash env: SSH_PRIV_KEY: ${{ secrets.DOCKER_SSH_PRIVATE_KEY }} diff --git a/common.yml b/common.yml new file mode 100644 index 0000000..9deeb0d --- /dev/null +++ b/common.yml @@ -0,0 +1,36 @@ +version: '3.7' + +services: + app: + build: + context: ./ + dockerfile: ./docker/server/Dockerfile + environment: + - DATADOG_TRACE_AGENT_HOSTNAME=datadog + - DD_ENV=dev + - DD_SERVICE=crossroads-web + - DD_LOGS_INJECTION=true + - DD_TRACE_ANALYTICS_ENABLED=true + - DD_TRACE_ASYNCIO_ENABLED=true + - DD_DJANGO_CACHE_SERVICE_NAME=crossroads-cache + - DD_DJANGO_DATABASE_SERVICE_NAME=crossroads-web + - DD_DJANGO_USE_HANDLER_RESOURCE_FORMAT=true + - DD_SQLITE_SERVICE=crossroads-db + - DD_PROFILING_ENABLED=true + + nginx: + restart: always + + datadog: + environment: + - DD_CONTAINER_EXCLUDE="name:datadog" + - DD_APM_ENABLED=true + - DD_LOGS_ENABLED=true + - DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true + build: + context: ./docker/datadog + dockerfile: ./Dockerfile + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /proc/:/host/proc/:ro + - /sys/fs/cgroup:/host/sys/fs/cgroup:ro diff --git a/docker-compose.override.yml.example b/docker-compose.override.yml.example index 5820738..967cbb7 100644 --- a/docker-compose.override.yml.example +++ b/docker-compose.override.yml.example @@ -3,17 +3,10 @@ version: '3.7' # Override the default docker-compose.yml with dev settings services: app: - command: ddtrace-run python manage.py runserver 0.0.0.0:8000 environment: - - DD_ENV=dev - POSTMARK_API_KEY= - volumes: - - .:/app nginx: - build: - context: ./docker/nginx_dev - dockerfile: ./Dockerfile # Edit 8000 to your desired port ports: - 8000:80 diff --git a/docker-compose.yml b/docker-compose.yml index e0c8a0e..6a67654 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,40 +2,27 @@ version: '3.7' services: app: - build: - context: ./ - dockerfile: ./docker/server/Dockerfile + extends: + file: common.yml + service: app environment: - - DATADOG_TRACE_AGENT_HOSTNAME=datadog - DD_ENV=dev - - DD_SERVICE=crossroads-web - - DD_LOGS_INJECTION=true - - DD_TRACE_ANALYTICS_ENABLED=true - - DD_TRACE_ASYNCIO_ENABLED=true - - DD_DJANGO_CACHE_SERVICE_NAME=crossroads-cache - - DD_DJANGO_DATABASE_SERVICE_NAME=crossroads-web - - DD_DJANGO_USE_HANDLER_RESOURCE_FORMAT=true - - DD_SQLITE_SERVICE=crossroads-db - - DD_PROFILING_ENABLED=true - restart: always + command: ddtrace-run python manage.py runserver 0.0.0.0:8000 + volumes: + - .:/app nginx: + extends: + file: common.yml + service: nginx + build: + context: ./docker/nginx_dev + dockerfile: ./Dockerfile restart: always - depends_on: - - app datadog: + extends: + file: common.yml + service: datadog environment: - - DD_CONTAINER_EXCLUDE="name:datadog" - - DD_APM_ENABLED=true - - DD_LOGS_ENABLED=true - - DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true - DD_LOG_LEVEL=INFO - image: ghcr.io/crossroadsinajax/datadog-agent:prod - build: - context: ./docker/datadog - dockerfile: ./Dockerfile - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - /proc/:/host/proc/:ro - - /sys/fs/cgroup:/host/sys/fs/cgroup:ro diff --git a/prod.yml b/prod.yml index 56e2d6f..de5948e 100644 --- a/prod.yml +++ b/prod.yml @@ -4,6 +4,9 @@ version: '3.7' services: app: + extends: + file: common.yml + service: app image: ghcr.io/crossroadsinajax/app:${GIT_TAG} environment: - DD_ENV=prod @@ -11,7 +14,6 @@ services: sh -c "python manage.py migrate && python manage.py loaddata groups && ddtrace-run daphne -b 0.0.0.0 -p 8000 crossroads.asgi:application" - restart: always secrets: - django_secret - postmark_api_key @@ -21,6 +23,9 @@ services: - /home/kyle/prod/media:/app/media nginx: + extends: + file: common.yml + service: nginx image: ghcr.io/crossroadsinajax/nginx:${GIT_TAG} build: context: ./docker/nginx_prod @@ -31,6 +36,9 @@ services: - staticfiles:/static datadog: + extends: + file: common.yml + service: datadog image: ghcr.io/crossroadsinajax/datadog-agent:${GIT_TAG} environment: - DD_LOG_LEVEL=WARNING diff --git a/staging.yml b/staging.yml index a4d20bd..6cc9c59 100644 --- a/staging.yml +++ b/staging.yml @@ -6,6 +6,9 @@ version: '3.7' services: app: + extends: + file: common.yml + service: app image: ghcr.io/crossroadsinajax/app:latest environment: - DD_ENV=staging @@ -13,7 +16,6 @@ services: sh -c "python manage.py migrate && python manage.py loaddata groups && ddtrace-run daphne -b 0.0.0.0 -p 8000 crossroads.asgi:application" - restart: always secrets: - django_secret - postmark_api_key @@ -23,6 +25,9 @@ services: - /home/kyle/staging/media:/app/media nginx: + extends: + file: common.yml + service: nginx image: ghcr.io/crossroadsinajax/nginx:latest build: context: ./docker/nginx_prod @@ -33,6 +38,9 @@ services: - staticfiles:/static datadog: + extends: + file: common.yml + service: datadog image: ghcr.io/crossroadsinajax/datadog-agent:latest environment: - DD_LOG_LEVEL=WARNING