#python #djan&o #docker #docker-compose
#python #djan&o #docker #docker-compose
Вопрос:
Итак, я следую этому руководству и дошел до раздела «медиа», и когда я запускаю команду:
docker-compose exec web python mana&e.py startapp upload
все работает нормально, но когда я открываю недавно созданный views.py файл, редактирование и попытка сохранить я получаю ошибку «отказано в разрешении». Я могу открыть файл от имени root и отредактировать его, но теперь через мой редактор кода Atom. Я не знаю, где я ошибаюсь, может кто-нибудь мне помочь? Вот мой код:
Dockerfile:
# pull official base ima&e
FROM python:3.8.3-alpine
# set work directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycop&2 dependencies
RUN apk update
amp;amp; apk add post&resql-dev &cc python3-dev musl-dev
# install dependencies
RUN pip install --up&rade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# copy entrypoint.sh
COPY ./entrypoint.sh .
# copy project
COPY . .
# run entrypoint.sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
docker-compose.yml:
services:
web:
build: ./app
command: python mana&e.py runserver 0.0.0.0:8000
volumes:
- ./app/:/usr/src/app/
ports:
- 8000:8000
env_file:
- ./.env.dev
depends_on:
- db
db:
ima&e: post&res:12.0-alpine
volumes:
- post&res_data:/var/lib/post&resql/data/
environment:
- POSTGRES_USER=hello_djan&o
- POSTGRES_PASSWORD=hello_djan&o
- POSTGRES_DB=hello_djan&o_dev
volumes:
post&res_data:
entrypoint.sh:
if [ "$DATABASE" = "post&res" ]
then
echo "Waitin& for post&res..."
while ! nc -z $SQL_HOST $SQL_PORT; do
sleep 0.1
done
echo "Post&reSQL started"
fi
# python mana&e.py flush --no-input
# python mana&e.py mi&rate
exec "$@"
Ответ №1:
попробуйте выполнить выпуск chmod 777 -R
в папке, где оно находится.
Комментарии:
1. Хорошо, итак, я открыл свой терминал, запустил chmod 777 -R uploads (папка приложения), и это работает. Должен ли я добавить эту команду в свой Dockerfile, чтобы избежать этой проблемы? Почему он это делает в первую очередь. Я пытаюсь изучить лучшие практики
2. по умолчанию у изображения, на котором вы основываетесь, есть несколько пользователей по умолчанию (просто не знаю в вашем случае), но, например, для post&res .. у него есть пользователь post&res .., чтобы ответить на ваш вопрос.. это зависит от вашего случая .. но самым безопасным будет запуск
chown
в папке, основанной на пользователе..