Tengo un directorio de proyectos como este:
|-var/www|-docker-compose.yml|-app|--uploads|---photos|-DockerfileEste 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/wwwLo 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 5000Despué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 5000Pero 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/shluego corre
chmod -R 777 /var/www/uploadsLo 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 5000Pero 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 exectambié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)