如何从dockerfile中已设置用户的容器中运行命令,而不会遇到错误和权限错误
我最近才开始使用docker。我已经为django应用程序编写了Dockerfile,如下所示。我创建并设置了用户。但是,每当我试图在docker-compose.yml(web)中定义的容器中运行或执行命令时,就会出现权限错误gunicorn project.wsgi-b 0.0.0.0:8000给出类似的错误。如何解决此权限错误。任何帮助都将不胜感激。我有下面定义的dockerfile和compose。提前谢谢如何从dockerfile中已设置用户的容器中运行命令,而不会遇到错误和权限错误,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我最近才开始使用docker。我已经为django应用程序编写了Dockerfile,如下所示。我创建并设置了用户。但是,每当我试图在docker-compose.yml(web)中定义的容器中运行或执行命令时,就会出现权限错误gunicorn project.wsgi-b 0.0.0.0:8000给出类似的错误。如何解决此权限错误。任何帮助都将不胜感激。我有下面定义的dockerfile和compose。提前谢谢 FROM python:3.8.3-alpine ENV APP_USER=u
FROM python:3.8.3-alpine
ENV APP_USER=user
ENV APP_HOME=/code
RUN addgroup -S $APP_USER && adduser -S $APP_USER -G $APP_USER
# set work directory
RUN mkdir -p $APP_HOME
RUN mkdir -p $APP_HOME/static
# where the code lives
WORKDIR $APP_HOME
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install pillow dependencies
RUN apk update \
&& apk --no-cache add g++ \
&& apk add gcc python3-dev jpeg-dev zlib-dev libmagic
# install dependencies
# copy project
COPY . $APP_HOME
RUN pip install -r requirements.txt
# chown all the files to the app user
RUN chown -R $APP_USER:$APP_USER $APP_HOME
# change to the app user
USER $APP_USER
您的
卷:
正在覆盖图像中的所有代码。你能从docker compose.yml文件中删除该块吗?Python虚拟环境可能更适合本地开发设置。当删除-。:${APP_HOME}它可以工作,但会删除到工作目录的映射是的,它可以。您将使用内置在映像中的应用程序的独立可重用副本。
version: "3.7"
services:
web:
build: .
command: sh -c "python ${APP_HOME}/manage.py makemigrations &&
python ${APP_HOME}/manage.py migrate &&
python ${APP_HOME}/manage.py runserver 0.0.0.0:${APP_PORT}"
volumes:
- .:${APP_HOME}
- static_volume:${APP_HOME}/static
ports:
- ${APP_PORT}:${APP_PORT}
env_file:
- ./.env
restart: "on-failure"
volumes:
static_volume: