web-dev-qa-db-fra.com

Comment donner des autorisations de dossier à l'intérieur d'un dossier Docker

Je crée un dossier dans mon Dockerfile et je veux lui donner une permission d'écriture. Mais je reçois une permission refusée d'erreur lorsque j'essaie de le faire

FROM python:2.7
RUN pip install Flask==0.11.1 
RUN useradd -ms /bin/bash admin
USER admin
COPY app /app
WORKDIR /app
RUN chmod 777 /app
CMD ["python", "app.py"] 

Mon erreur est

PS C:\Users\Shivanand\Documents\Notes\Praneeth's work\Flask> docker build -t 
shivanand3939/test .
Sending build context to Docker daemon  209.9kB
Step 1/8 : FROM python:2.7
---> 8a90a66b719a
Step 2/8 : RUN pip install Flask==0.11.1
---> Using cache
---> 6dc114bd7cf1
Step 3/8 : RUN useradd -ms /bin/bash admin
---> Using cache
---> 1cfdb6eea7dc
Step 4/8 : USER admin
---> Using cache
---> 27c5e8b09f15
Step 5/8 : COPY app /app
---> Using cache
---> 5d628573b24f
Step 6/8 : WORKDIR /app
---> Using cache
---> 351e19a5a007
Step 7/8 : RUN chmod 777 /app
---> Running in aaad3c79e0f4
**chmod: changing permissions of ‘/app’: Operation not permitted
The command '/bin/sh -c chmod 777 /app' returned a non-zero code: 1**

Comment puis-je donner des autorisations d'écriture au dossier de l'application dans mon conteneur Docker?

12
Shivanand T

Je suppose que vous passez à l'utilisateur "admin", qui n'a pas le droit de modifier les autorisations sur le répertoire/app. Changez la propriété en utilisant l'utilisateur "root". Ci-dessous, Dockerfile a fonctionné pour moi -

FROM python:2.7
RUN pip install Flask==0.11.1 
RUN useradd -ms /bin/bash admin
COPY app /app
WORKDIR /app
RUN chown -R admin:admin /app
RUN chmod 755 /app
USER admin
CMD ["python", "app.py"] 

PS - Essayez de vous débarrasser de la permission "777". J'ai essayé de le faire momentanément au-dessus de Dockerfile.

22
vivekyad4v

Comme l’autre utilisateur l’a déjà signalé, déplacez USER admin à une étape ultérieure

FROM python:2.7
RUN pip install Flask==0.11.1 
RUN useradd -ms /bin/bash admin
COPY --chown=admin:admin app /app
WORKDIR /app
USER admin
CMD ["python", "app.py"] 

Pour les versions version v17.09.0-ce et les versions plus récentes , vous pouvez utiliser l'indicateur facultatif --chown=<user>:<group> avec les commandes ADD ou COPY.

Par exemple

COPY --chown=<user>:<group> <hostPath> <containerPath>

La documentation de l'indicateur --chown est décrite sur page de référence de Dockerfile .

1
so-random-dude