Я пытаюсь сделать свой первый django контейнер с uwsgi. Он работает следующим образом:
FROM python:3.5
RUN apt-get update && \
apt-get install -y && \
pip3 install uwsgi
COPY ./projects.thux.it/requirements.txt /opt/app/requirements.txt
RUN pip3 install -r /opt/app/requirements.txt
COPY ./projects.thux.it /opt/app
COPY ./uwsgi.ini /opt/app
COPY ./entrypoint /usr/local/bin/entrypoint
ENV PYTHONPATH=/opt/app:/opt/app/apps
WORKDIR /opt/app
ENTRYPOINT ["entrypoint"]
EXPOSE 8000
#CMD ["--ini", "/opt/app/uwsgi.ini"]
entrypoint
- это скрипт, который определяет, следует ли вызывать uwsgi
(если нет аргументов) или python manage
во всех других случаях. Я хотел бы использовать этот контейнер как исполняемый файл (dj migrate, dj shell, ... - здесь dj есть python manage.py обработчик для взаимодействия django) и как долгосрочный контейнер (uwsgi - -ini uwsgi.ini). Я использую docker -составить следующим образом:
web:
image: thux-projects:3.5
build: .
ports:
- "8001:8000"
volumes:
- ./projects.thux.it/web/settings:/opt/app/web/settings
- ./manage.py:/opt/app/manage.py
- ./uwsgi.ini:/opt/app/uwsgi.ini
- ./logs:/var/log/django
И мне действительно удается правильно обслуживать проект, но для взаимодействия с django для «проверки» мне нужно выдать:
docker -compose exe c проверка точки входа в сеть
при чтении документов, которые я себе представлял, мне просто нужны аргументы (без entrypoint
)
Аргументы командной строки к docker run будет добавлен после всех элементов в exe c form ENTRYPOINT и переопределит все элементы, указанные с помощью CMD. Это позволяет передавать аргументы в точку входа, т. Е. docker run -d передает аргумент -d в точку входа.
Рабочая ситуация с «повторной» точкой входа:
$ docker-compose exec web entrypoint check
System check identified no issues (0 silenced).
Ошибка, если я избегаю «точки входа»:
$ docker-compose exec web check
OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \"check\": executable file not found in $PATH": unknown