Ubuntu 22.04.1 LTS 上 Dockerfile 中的 RUN 命令出现问题

Ubuntu 22.04.1 LTS 上 Dockerfile 中的 RUN 命令出现问题

我是 docker 新手。我有以下 Dockerfile 和 docker-compose.yml 文件

FROM python:3.9-alpine3.13

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /tmp/requirements.txt
COPY ./app /app
WORKDIR /app
EXPOSE 8000

RUN python -m venv /py && \
    /py/bin/pip install --upgrade pip && \
    mkdir -p /vol/web/media && \
    mkdir -p /vol/web/static && \
    chown -R django-user:django-user /vol && \
    chmod -R 755 /vol && \
    
ENV PATH="/py/bin:$PATH"

USER django-user

和这个docker-compose文件

version: "3.3"

services:
  app:
    build:
      context: .
      args:
        - DEV=true
    container_name: app
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
      - data:/vol/web
    command: >
      sh -c "python manage.py migrate &&
             python manage.py runserver 0.0.0.0:8000"
  
    depends_on:
      - db

  db:
  ......

volumes:
  data:
  

我对 RUN 指令的工作原理有点困惑。

  1. docker-compose build运行和命令后docker-compose up,我的容器就构建好了。但我的问题是,我通过运行$ docker exec -it app sh命令访问了我的应用程序容器,但在里面我没有看到/vol/web/media和,而/vol/web/static对我来说,这两个文件夹应该是在构建 Dockerfile 期间创建的。为什么我在应用程序容器中找不到这两个文件夹?它们在哪里?

  2. 当在 Dockerfile 中运行 RUN 指令来安装某些软件包时,这些软件包安装在哪里?在我的 Ubuntu 主机中还是在容器的文件系统中?

相关内容