Tengo un directorio de proyectos como este:
|-var/www|-docker-compose.yml|-app|--uploads|---photos|-Dockerfile
Este es mi docker-compose.yml
file:
myapp: build: context: myfolder dockerfile: Dockerfile container_name: flask image: api/v1:01 restart: unless-stopped environment: APP_ENV: "prod" APP_DEBUG: "False" APP_PORT: 5000 volumes: - appdata:/var/www
Lo que quiero: Quiero cambiar app/uploads/photos
el permiso de esta carpeta para 777
.Esta es una carpeta de carga, por lo que el usuario puede cargar en esta carpeta.
Mi Dockerfile
ahora se ve así:
FROM python:3.6.8-alpine3.9ENV GROUP_ID=1000 \ USER_ID=1000WORKDIR /var/www/ADD . /var/www/RUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-devRUN pip install --upgrade pipRUN pip install -r requirements.txtRUN addgroup -g $GROUP_ID wwwRUN adduser -D -u $USER_ID -G www www -s /bin/shUSER wwwEXPOSE 5000
Después de mirar en este pregunta,Para lograr lo que quiero,intenté a continuación:
FROM python:3.6.8-alpine3.9ENV GROUP_ID=1000 \ USER_ID=1000WORKDIR /var/www/ADD . /var/www/RUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-devRUN pip install --upgrade pipRUN pip install -r requirements.txtRUN addgroup -g $GROUP_ID wwwRUN adduser -D -u $USER_ID -G www www -s /bin/shRUN chown -R www:www /var/wwwRUN chmod -R 777 /var/www/uploadsRUN chmod -R 777 /var/www/uploads/photosUSER wwwEXPOSE 5000
Pero parece que el chmod
el comando en mi dockerfile no está surtiendo efecto.Porque cada vez que subo algunos archivos a app/uploads/photos
en mi código, mi nginx
el servidor sigue recibiendo este error:
PermissionError: [Errno 13] Permission denied: '/var/www/uploads/photos/myfilename.png'
Alguien por favor ayuda.Proporcione una solución sobre cómo cambiar el permiso de una carpeta en Dockerfile
.
ACTUALIZAR:
Intenté cambiar el permiso de /var/www/uploads
después de construir el contenedor y el contenedor se está ejecutando haciendo lo siguiente:
docker exec -it myapp /bin/sh
luego corre
chmod -R 777 /var/www/uploads
Lo que obtengo es chmod: /var/www/uploads: Operation not permitted
Por lo tanto, sospecho que este error también ocurrirá cuando la ventana acoplable se esté compilando,luego de acuerdo con esta respuesta de serverfault, Intenté modificar el dockerfile a esto:
FROM python:3.6.8-alpine3.9ENV GROUP_ID=1000 \ USER_ID=1000WORKDIR /var/www/ADD . /var/www/USER rootRUN chmod -R 777 /var/www/uploadsRUN addgroup -g $GROUP_ID wwwRUN adduser -D -u $USER_ID -G www www -s /bin/shUSER wwwRUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-devRUN pip install --upgrade pipRUN pip install -r requirements.txtEXPOSE 5000
Pero todavía no funciona. Pero parece que mi enfoque anterior también es incorrecto.Porque yo ya corro en root
en el dockerfile
.Pero al mismo tiempo, cuando accedo al contenedor en el host usando docker exec
también llegar Operation not permitted
.
Soy muy nuevo en Docker.Simplemente no puedo entender cómo hacer esto.
Lo que espero saber:
1) Cómo cambiar la carpeta var/www/uploads
¿al permiso 777?
2) ¿Cuál es el problema que causa que no pueda cambiar el permiso de mi enfoque?
3) ¿Cuál es la mejor manera de lograrlo? (En su caso)