Saya memiliki direktori proyek seperti ini:
|-var/www|-docker-compose.yml|-app|--uploads|---photos|-Dockerfile
Ini adalah saya docker-compose.yml
berkas:
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
Apa yang saya inginkan: Saya ingin berubah app/uploads/photos
izin folder ini untuk 777
.Ini adalah folder upload, sehingga pengguna dapat meng-upload ke folder ini.
Saya Dockerfile
sekarang adalah terlihat seperti ini:
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
Setelah melihat ini pertanyaan,Untuk mencapai apa yang saya inginkan,saya mencoba di bawah ini:
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
Tapi tampaknya seperti chmod
perintah di dockerfile saya tidak berlaku.Karena setiap kali saya meng-upload beberapa file ke app/uploads/photos
dalam kode saya, saya nginx
server terus mendapatkan kesalahan ini:
PermissionError: [Errno 13] Permission denied: '/var/www/uploads/photos/myfilename.png'
Seseorang tolong bantu.Harap memberikan solusi untuk bagaimana mengubah izin dari folder di Dockerfile
.
Pembaruan:
Saya mencoba mengubah izin dari /var/www/uploads
setelah membangun wadah dan wadah berjalan dengan melakukan di bawah ini:
docker exec -it myapp /bin/sh
kemudian jalankan
chmod -R 777 /var/www/uploads
Apa yang saya dapatkan adalah chmod: /var/www/uploads: Operation not permitted
Oleh karena itu saya menduga kesalahan ini juga akan terjadi ketika buruh pelabuhan sedang membangun, maka menurut jawaban ini dari serverfault, Saya mencoba memodifikasi dockerfile menjadi ini:
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
Tapi itu masih tidak berhasil. Tapi sepertinya pendekatan saya di atas juga salah.Karena aku sudah berjalan di root
dalam dockerfile
.Tetapi pada saat yang sama,ketika saya mengakses wadah di host menggunakan docker exec
, juga mendapatkan Operation not permitted
.
Saya sangat baru di Docker.Hanya tidak bisa mencari tahu bagaimana untuk mendapatkan ini dilakukan.
Apa yang saya berharap untuk tahu:
1) Bagaimana mengubah folder var/www/uploads
untuk izin 777?
2) Apa masalah yang menyebabkan saya tidak dapat mengubah izin dari pendekatan saya?
3) Apa cara yang lebih baik untuk mencapai ini? (Jika ada)