From 8b1523b8c484abed432dfd80d4592048e9861405 Mon Sep 17 00:00:00 2001 From: Johannes Christ Date: Sat, 6 Oct 2018 22:42:38 +0200 Subject: Update the compose file and dockerapp file. The development app from the compose file will now apply migrations on boot and additionally, it will use Django's development server along with the current directory mounted read-only into the container in order to support code reloading, helpful while development. --- .dockerignore | 1 + docker-compose.yml | 31 +++++++++++++++++++++++++++++++ docker/app/migrate_and_serve.sh | 13 +++++++++++++ docker/pysite.dockerapp | 23 +++++++---------------- 4 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 docker-compose.yml create mode 100755 docker/app/migrate_and_serve.sh diff --git a/.dockerignore b/.dockerignore index 33fc984e..d853d0d2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -17,6 +17,7 @@ api/tests.py CHANGELOG.md CONTRIBUTING.md docker +!docker/app/migrate_and_boot.sh !docker/app/uwsgi.ini docker-compose.yml Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..95513d84 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +### Docker compose setup file +# This file can be used to quickly set up a development server +# with code auto-reloading and automatic execution of migrations. +# +## Note +# This file is not intended to be used for production. + +version: "3.6" +services: + django: + build: + context: . + dockerfile: docker/app/alpine/3.7/Dockerfile + command: docker/app/migrate_and_serve.sh + ports: + - "8000:8000" + depends_on: + - postgres + volumes: + - .:/app:ro + environment: + DATABASE_URL: postgres://pysite:supersecretpassword@postgres/pysite + DEBUG: "true" + SECRET_KEY: suitable-for-development-only + + postgres: + image: postgres:11-alpine + environment: + POSTGRES_DB: pysite + POSTGRES_PASSWORD: supersecretpassword + POSTGRES_USER: pysite diff --git a/docker/app/migrate_and_serve.sh b/docker/app/migrate_and_serve.sh new file mode 100755 index 00000000..7c20130b --- /dev/null +++ b/docker/app/migrate_and_serve.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +### NOTE +# This file is intended to be used by local setups. +# You do not want to run the Django development server +# in production. The default Dockerfile command will +# run using uWSGI, this script is provided purely as +# a convenience to run migrations and start a development server. + +echo [i] Applying migrations. +python manage.py migrate --verbosity 0 +echo [i] Starting server. +python manage.py runserver diff --git a/docker/pysite.dockerapp b/docker/pysite.dockerapp index 4a811861..dc472b2e 100644 --- a/docker/pysite.dockerapp +++ b/docker/pysite.dockerapp @@ -1,8 +1,8 @@ -version: 0.1.0 +version: 0.3.0 name: pysite description: | Our community website, built on Django and PostgreSQL. -#namespace: python-discord +namespace: python-discord maintainers: - name: Johannes Christ email: jc@jchri.st @@ -11,15 +11,16 @@ maintainers: version: "3.6" services: django: - image: registry.gitlab.com/python-discord/projects/site/django:latest + build: + context: . + command: docker/app/migrate_and_serve.sh ports: - "127.0.0.1:4000:4000" environment: DATABASE_URL: "postgres://${pg_user}:${pg_passwd}@${pg_host}/${pg_db}" - DEBUG: 0 + DEBUG: 'false' SECRET_KEY: "${secret_key}" depends_on: - - migrator - postgres postgres: @@ -29,20 +30,10 @@ services: POSTGRES_USER: "${pg_user}" POSTGRES_PASSWORD: "${pg_passwd}" - migrator: - image: registry.gitlab.com/python-discord/projects/site/django:latest - environment: - DATABASE_URL: "postgres://${pg_user}:${pg_passwd}@${pg_host}/${pg_db}" - DEBUG: 0 - SECRET_KEY: "${secret_key}" - command: "python manage.py migrate" - depends_on: - - postgres - --- pg_user: pysite pg_db: pysite -pg_passwd: '' +pg_passwd: supersecretpassword pg_host: postgres secret_key: 'suitable-for-development-only' -- cgit v1.2.3 From f60bc137deebea528fd09d0a9598336618cad329 Mon Sep 17 00:00:00 2001 From: Johannes Christ Date: Mon, 15 Oct 2018 20:26:05 +0200 Subject: Bind Django development server to all interfaces. --- docker/app/migrate_and_serve.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/app/migrate_and_serve.sh b/docker/app/migrate_and_serve.sh index 7c20130b..032504e2 100755 --- a/docker/app/migrate_and_serve.sh +++ b/docker/app/migrate_and_serve.sh @@ -10,4 +10,4 @@ echo [i] Applying migrations. python manage.py migrate --verbosity 0 echo [i] Starting server. -python manage.py runserver +python manage.py runserver 0.0.0.0:8000 -- cgit v1.2.3 From bceb24a1f060a241f36ea468a8a9d8657f052b93 Mon Sep 17 00:00:00 2001 From: Johannes Christ Date: Mon, 15 Oct 2018 20:26:13 +0200 Subject: Only listen on localhost. --- docker-compose.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 95513d84..ee302d4e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,9 @@ # ## Note # This file is not intended to be used for production. +# The "migrate and server" script will automatically apply migrations +# and additionally use the Django development server which is +# unsuitable for production. version: "3.6" services: @@ -13,7 +16,7 @@ services: dockerfile: docker/app/alpine/3.7/Dockerfile command: docker/app/migrate_and_serve.sh ports: - - "8000:8000" + - "127.0.0.1:8000:8000" depends_on: - postgres volumes: -- cgit v1.2.3 From a5b90d5e68030eb6f0b1ede436c3fe3d77d33b72 Mon Sep 17 00:00:00 2001 From: Johannes Christ Date: Tue, 16 Oct 2018 22:53:14 +0200 Subject: Add `docker` tag to use proper runners. --- .gitlab-ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be2ac1d0..22190d43 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,6 +38,8 @@ build-alpine-3.7: -f docker/app/alpine/3.7/Dockerfile . - docker push $BASE_IMAGE_URL:alpine-3.7-$CI_COMMIT_REF_SLUG + tags: + - docker build-alpine-3.6: stage: build @@ -52,6 +54,8 @@ build-alpine-3.6: -f docker/app/alpine/3.6/Dockerfile . - docker push $BASE_IMAGE_URL:alpine-3.6-$CI_COMMIT_REF_SLUG + tags: + - docker build-stretch-3.7: stage: build @@ -66,6 +70,8 @@ build-stretch-3.7: -f docker/app/stretch/3.7/Dockerfile . - docker push $BASE_IMAGE_URL:stretch-3.7-$CI_COMMIT_REF_SLUG + tags: + - docker build-stretch-3.6: stage: build @@ -80,6 +86,8 @@ build-stretch-3.6: -f docker/app/stretch/3.6/Dockerfile . - docker push $BASE_IMAGE_URL:stretch-3.6-$CI_COMMIT_REF_SLUG + tags: + - docker lint-python: stage: lint @@ -145,6 +153,8 @@ pages: paths: - public expire_in: 30 days + tags: + - docker push-django: image: docker:stable-git -- cgit v1.2.3