Int*_*rer 20 docker dockerfile
在docker docs 入门教程第 2 部分中,它有一个制作 Dockerfile。它指示添加以下行:
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
Run Code Online (Sandbox Code Playgroud)
什么是/app,为什么这是一个必要的步骤?
Pau*_*son 32
构建docker镜像时有两个重要目录:
WORKDIR
目录。它是主机上的目录,docker 将在其中获取文件以构建映像。它docker build
作为最后一个参数传递给命令。(它可以是 URL,而不是主机上的 PATH)。简单的例子:
docker build -t myimage .
Run Code Online (Sandbox Code Playgroud)
这里的当前目录 ( .
) 是构建上下文目录。在这种情况下,docker build
将使用 位于该目录中的Dockerfile。该目录中的所有文件对docker build
.
构建上下文目录不一定是 Dockerfile 所在的位置。Dockerfile 位置默认为当前目录,否则由-f
otpion指示。例子:
docker build -t myimage -f ./rest-adapter/docker/Dockerfile ./rest-adapter
Run Code Online (Sandbox Code Playgroud)
这里的 build context dir 是./rest-adapter
你调用的子目录docker build
;Dokerfile 位置由 表示-f
。
它是容器映像中的一个目录,可以使用WORKDIR
Dockerfile 中的指令进行设置。它是可选的(默认为/
,但基础图像可能已设置它),但被认为是一个很好的做法。Dockerfile 中的后续指令,例如RUN
,CMD
和ENTRYPOINT
将在此目录中运行。至于COPY
and ADD
,他们同时使用......
这两个命令有<src>
和<dest>
。
<src>
是相对于构建上下文目录的。<dest>
相对于WORKDIR 目录。例如,如果您的 Dockerfile 包含...
WORKDIR /myapp
COPY . .
Run Code Online (Sandbox Code Playgroud)
然后你的构建上下文目录的内容将被复制到/myapp
你的 docker 镜像中的目录。
Hug*_*sta 20
WORKDIR
是一个很好的做法,因为您可以将一个目录设置为主目录,然后您可以使用 COPY、ENTRYPOINT、CMD 命令对其进行处理,因为它们将指向此 PATH 执行。
Docker 文档: https : //docs.docker.com/engine/reference/builder/
该WORKDIR
指令为 Dockerfile 中跟随它的任何 RUN、CMD、ENTRYPOINT、COPY 和 ADD 指令设置工作目录。如果 WORKDIR 不存在,即使它没有在任何后续 Dockerfile 指令中使用,它也会被创建。
该WORKDIR
指令可以在 Dockerfile 中多次使用。如果提供了相对路径,它将相对于前一个 WORKDIR 指令的路径。
Dockerfile 示例:
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)
创建了一个 alpine node.js 并且工作目录是 /app,然后将 al 文件复制到 /app
最后 npm run start 命令运行到容器内的 /app 文件夹中。
如果您有 sh 或 bash tty,您应该执行以下命令:
docker exec -it <container-id> sh
或者
docker exec -it <container-id> bash
之后,您可以执行ls
命令,您将可以看到 WORKDIR 文件夹。
我希望它可以帮助你
归档时间: |
|
查看次数: |
24233 次 |
最近记录: |