Настройка docker-compose.yaml для vue, redis, celery и django
Я планирую запускать приложение одной командой из терминала. Однако при конфигурировании docker-compose.yaml
столкнулся со множеством проблем и пробелов в своих знаниях. Составив наконец этот файл понял что работает только redis а остальное не запускается. Сам Django
работает на postgresql
, а redis
нужен только для нормальной работы celery
, которого я пока не хочу добавлять в docker
Структура приложения
docker-compose.yaml
src/web/static/museum/(фронт приложения на vue.js)
src/manage.py
python/Dockerfile
vue-js/Dockerfile
python/Dockerfile
FROM python:3.8
ENV PYTHONUNBUFFERED 1
RUN pip install poetry==1.1.8 && poetry config virtualenvs.create false
WORKDIR /app
COPY pyproject.toml .
RUN poetry install
COPY . .
RUN python src/manage.py collectstatic --no-input
EXPOSE 8000
CMD python src/manage.py migrate && python src/manage.py runserver 0.0.0.0:8000
vue-js/Dockerfile
FROM node:lts-alpine
WORKDIR /app/src/web/static/museum
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "run", "serve"]
docker-compose.yaml
version: '3'
services:
celery:
build: .
container_name: celery
command: cd src && celery -A kpfu_museum_web worker -l info
depends_on:
- redis
- app
redis:
image: redis:6-alpine
ports:
- 6379:6379
vue:
image: node:lts-alpine
build:
context: ./vue-js
dockerfile: Dockerfile
ports:
- 8080:8080
restart: always
app:
image: django3.2:latest
build:
context: ./python
dockerfile: Dockerfile
depends_on:
- redis
environment:
DB_USER: user
DB_NAME: name
DB_PASSWORD: password
CELERY_BROKER_URL: redis://redis:6379/0
restart: always
при запуске docker-compose.yaml с задокументированным celery выдает ошибку
app_1 | connection = Database.connect(**conn_params)
app_1 | File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
app_1 | conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
app_1 | django.db.utils.OperationalError: could not connect to server: Connection refused
app_1 | Is the server running on host "127.0.0.1" and accepting
app_1 | TCP/IP connections on port 5432?
app_1 |
app_1 exited with code 1
однако при запуске с celery он вообще не собирается и падает в самом начале
(venv) E:\Python_Django\museum>docker-compose up
[+] Building 0.1s (1/2)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 2B 0.0s
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount206843837/Dockerfile: no such file or directory
В чем именно ошибки?
Заранее вспасибо!