我是 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 指令的工作原理有点困惑。
docker-compose build
运行和命令后docker-compose up
,我的容器就构建好了。但我的问题是,我通过运行$ docker exec -it app sh
命令访问了我的应用程序容器,但在里面我没有看到/vol/web/media
和,而/vol/web/static
对我来说,这两个文件夹应该是在构建 Dockerfile 期间创建的。为什么我在应用程序容器中找不到这两个文件夹?它们在哪里?当在 Dockerfile 中运行 RUN 指令来安装某些软件包时,这些软件包安装在哪里?在我的 Ubuntu 主机中还是在容器的文件系统中?