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?
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.
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 .