diff --git a/docker-compose.yml b/docker-compose.yml index 7a39a3f..e168162 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,52 +1,56 @@ version: '3' +volumes: + postgres-data: + static-files: + node-modules: services: db: - # See https://hub.docker.com/_/postgres image: postgres - container_name: postgres environment: - - POSTGRES_DB=$POSTGRES_NAME - - POSTGRES_USER=$POSTGRES_USER - - POSTGRES_PASSWORD=$POSTGRES_PASSWORD + POSTGRES_DB: "newsreader" + POSTGRES_USER: "newsreader" + POSTGRES_PASSWORD: "newsreader" + volumes: + - postgres-data:/var/lib/postgresql/data rabbitmq: image: rabbitmq:3.7 - container_name: rabbitmq - celery: - build: . - container_name: celery - command: poetry run celery -A newsreader worker -l INFO --beat --scheduler django --workdir=/app/src/ - environment: - - POSTGRES_HOST=$POSTGRES_HOST - - POSTGRES_NAME=$POSTGRES_NAME - - POSTGRES_USER=$POSTGRES_USER - - POSTGRES_PASSWORD=$POSTGRES_PASSWORD - - DJANGO_SETTINGS_MODULE=newsreader.conf.docker - volumes: - - .:/app - depends_on: - - rabbitmq memcached: image: memcached:1.5.22 - container_name: memcached ports: - "11211:11211" entrypoint: - memcached - -m 64 - web: - build: . - container_name: web + celery: + build: + context: . + dockerfile: ./docker/django + command: celery worker --app newsreader --loglevel INFO --beat --scheduler django --workdir /app/src/ + environment: + - DJANGO_SETTINGS_MODULE=newsreader.conf.docker + depends_on: + - rabbitmq + django: + build: + context: . + dockerfile: ./docker/django command: src/entrypoint.sh environment: - - POSTGRES_HOST=$POSTGRES_HOST - - POSTGRES_NAME=$POSTGRES_NAME - - POSTGRES_USER=$POSTGRES_USER - - POSTGRES_PASSWORD=$POSTGRES_PASSWORD - DJANGO_SETTINGS_MODULE=newsreader.conf.docker - volumes: - - .:/app ports: - '8000:8000' depends_on: - db + volumes: + - .:/app + - static-files:/app/src/newsreader/static + webpack: + build: + context: . + dockerfile: ./docker/webpack + command: npm run build:watch + volumes: + - .:/app + - static-files:/app/src/newsreader/static + - node-modules:/app/node_modules diff --git a/Dockerfile b/docker/django similarity index 59% rename from Dockerfile rename to docker/django index 61ef10b..871828a 100644 --- a/Dockerfile +++ b/docker/django @@ -5,7 +5,6 @@ RUN pip install poetry WORKDIR /app COPY poetry.lock pyproject.toml /app/ -RUN poetry config virtualenvs.create false -RUN poetry install --no-interaction +RUN poetry config virtualenvs.create false && poetry install --no-interaction COPY . /app/ diff --git a/docker/webpack b/docker/webpack new file mode 100644 index 0000000..6909ee9 --- /dev/null +++ b/docker/webpack @@ -0,0 +1,9 @@ +FROM node:12 + +WORKDIR /app + +COPY package.json package-lock.json /app/ + +RUN npm install + +COPY . /app/ diff --git a/src/entrypoint.sh b/src/entrypoint.sh index 451b7d3..3fbf941 100755 --- a/src/entrypoint.sh +++ b/src/entrypoint.sh @@ -1,5 +1,5 @@ #!/bin/bash # This file should only be used in conjuction with docker-compose -poetry run /app/src/manage.py migrate -poetry run /app/src/manage.py runserver 0.0.0.0:8000 +python /app/src/manage.py migrate +python /app/src/manage.py runserver 0.0.0.0:8000 diff --git a/src/newsreader/conf/docker.py b/src/newsreader/conf/docker.py index 3584b30..dd2471f 100644 --- a/src/newsreader/conf/docker.py +++ b/src/newsreader/conf/docker.py @@ -3,9 +3,15 @@ from .dev import * # isort:skip SECRET_KEY = "=q(ztyo)b6noom#a164g&s9vcj1aawa^g#ing_ir99=_zl4g&$" -# Celery -# https://docs.celeryproject.org/en/latest/userguide/configuration.html -BROKER_URL = "amqp://guest:guest@rabbitmq:5672//" +DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": "newsreader", + "USER": "newsreader", + "PASSWORD": "newsreader", + "HOST": "db", + } +} CACHES = { "default": { @@ -17,3 +23,7 @@ CACHES = { "LOCATION": "memcached:11211", }, } + +# Celery +# https://docs.celeryproject.org/en/latest/userguide/configuration.html +CELERY_BROKER_URL = "amqp://guest:guest@rabbitmq:5672//"