这些是 Dockerfile 的前两行:
FROM node:12
WORKDIR /code
Run Code Online (Sandbox Code Playgroud)
这里有一些我不明白的事情:从docker的文档中我知道第二行将工作目录设置为/code。这个过程发生在哪里?当 docker 在创建镜像时运行 Dockerfile 的第二行时,会发生这种情况吗?如果/code不存在,它是由docker创建的吗?/code 将在哪里创建?在图像的根目录中?
这可能是一个愚蠢的问题,但我是 Docker 的新手,我正在努力解决这个问题。我有一个包含许多子文件夹的项目,如下例所示:
project-folder:
folder_1:
code1.py
Dockerfile
requirements.txt
folder_2:
code2.py
Dockerfile
requirements.txt
folder_data:
file1
file2
file3
Run Code Online (Sandbox Code Playgroud)
然后,我想这样做:
project-folder维护所有容器的工作目录;folder_data- 我知道我必须指定一个卷,我只是不知道如何在不保留我的project-folderas workdir 的情况下执行此操作;project-folder) 传递给我的 code1.py注意:只有当我在每个子文件夹中创建图像时,图像才成功创建,如下 Dockerfile:
FROM python:3.6-slim
COPY . /folder_1
WORKDIR /folder_1
RUN pip install -r requirements.txt
CMD ["python3", "code1.py", "$(pwd)"]
Run Code Online (Sandbox Code Playgroud)
图像创建命令:
docker build -t image_folder1 .
Run Code Online (Sandbox Code Playgroud)
我目前正在 的上下文中创建图像folder_1,因为我无法在 的上下文中正确创建图像project-folder