如何从dockerfile中已设置用户的容器中运行命令,而不会遇到错误和权限错误

如何从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

我最近才开始使用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=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: