образ собирается таким Dockerfile
FROM python:3.10-slim-bullseye
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
#RUN mkdir -p /app/static && chown 1006:1006 -R /app/static && chmod 744 -R /app/static
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY /myapp .
RUN ["chmod", "+x", "/app/docker-entrypoint.sh"]
RUN chown -R 1006:1006 /app
EXPOSE 8000
USER 1006:1006
ENTRYPOINT ["/app/docker-entrypoint.sh"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Но на другом сервере у пользователя с тем же именем может быть другой ID. Как обойти это?
Ну другой, и что дальше?
забыл дописать, контейнер запускается вот так docker run --name $dh_image_name --restart=always --net=gs_network --user 1006:1006 -d -v /home/$dh_image_name/.settings:/app/settings.py $dh_username/$dh_image_name:latest но на другом сервере будет например --user 1111:1111 и тогда приложение внутри контейнера начинает ругаться что у него нет прав на папку. Может есть какая best practices для случая когда контейнер нужно запускать от имени конкретного пользователя?
$(id -u username) и $(id -g username)
это для запуска подойдёт для docker run, но то что внутри Dockerfile? RUN chown -R 1006:1006 /app USER 1006:1006 контейнер ведь собирается на другом компе а запускаться может на множестве разных компов, и везде ID пользователя может быть свой
Какую папку, я тут вижу только файл
папка /app внутри контейнера
она в аргументах docker run не указана, соответственно с хоста не монтируется. о каких проблемах с uid идет речь?
Обсуждают сегодня