У меня есть следующий файл docker-compose
version: '3'
services:
web:
build: .
command: bash -c "python manage.py collectstatic --no-input && gunicorn -w 2 --bind 0.0.0.0:8000 api.wsgi:application"
volumes:
- .:/code
- static_volume:/code/api/static
expose:
- 8000
environment:
- DJANGO_SETTINGS_MODULE=api.settings.production
depends_on:
- redis
redis:
image: "redis:alpine"
celery:
build: .
command: celery -A api worker -l warning
volumes:
- .:/code
environment:
- DJANGO_SETTINGS_MODULE=api.settings.production
depends_on:
- redis
nginx:
build: ./nginx
ports:
- 80:80
volumes:
- static_volume:/code/api/static
depends_on:
- web
volumes:
static_volume:
, который я использую для создания образа docker и отправки его в наш реестр Docker gitlab с помощью следующих команд:
docker build -t foo/api-django .
docker push foo/api-django
Это работает без проблем. Но как только я вытягиваю образ и запускаю его, используя следующую команду
docker run -p 8000:80 -i -t foo/api-django
, он просто показывает мне оболочку python изображения:
любой совет? когда я просто запускаю docker-compose, он обычно запускает nginx, gunicorn и т. д.
EDIT: вот мой новый dockerfile, который, кажется, работает. но теперь запускается только gunicorn, когда я использую docker ps
FROM python:3
ENV PYTHONUNBUFFERED 1
ENV C_FORCE_ROOT true
ENV DJANGO_SETTINGS_MODULE api.settings.production
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD [ "python", "manage.py", "collectstatic", "--no-input" ]
CMD [ "gunicorn", "-w", "2", "--bind", "0.0.0.0:8000", "api.wsgi:application" ]