Ary*_*are 8 docker docker-compose
我正在尝试学习 docker 并创建了我的第一个 docker compose 文件。基本上我正在尝试创建一个 Django Web 微服务并使用 docker compose 文件来管理它。这是我的 docker-compose.yml 代码:
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "py manage.py runserver 0.0.0.0:8000"
Run Code Online (Sandbox Code Playgroud)
我不明白的用法context: .有人可以解释一下吗
语境
包含 Dockerfile 的目录的路径,或 git 存储库的 url。
当提供的值是相对路径时,它被解释为相对于 Compose 文件的位置。此目录也是发送到 Docker 守护程序的构建上下文。
Compose 使用生成的名称构建并标记它,然后使用该图像。
build:
context: ./dir
Run Code Online (Sandbox Code Playgroud)
这意味着,它是包含 Dockerfile 文件的目录的路径。它的目的是为服务建立一个新的形象。
参考:https : //docs.docker.com/compose/compose-file/compose-file-v3/
在你的情况下:
context: .
Run Code Online (Sandbox Code Playgroud)
Dockerfile 文件应该存在于当前目录中。(在 docker-compose.yml 文件的同一文件夹中)
从官方文档我们得知:
context 定义包含 Dockerfile 的目录的路径,或 git 存储库的 URL。
在您的情况下,.是一个相对路径,表示您运行命令的当前目录docker-compose,并且 Compose 可以在其中找到 Dockerfile(显然还有该docker-compose.yaml文件)。
Dockerfile 也可以在其他地方使用dockerfile关键字,如下例所示:
version: "3.3"
services:
service-A
build:
context: ./all-service
dockerfile: ./service-A/Dockerfile
service-B
build:
context: ./all-service
dockerfile: ./service-B/Dockerfile
service-C
build:
context: ./all-service
dockerfile: ./service-C/Dockerfile
Run Code Online (Sandbox Code Playgroud)
这里附加的context关键字是告诉 Dockerfile 在哪里可以找到其依赖文件。
例如,在您的其中之一中Dockerfile有以下几行:
WORKDIR /my-app
COPY package.json package.json
COPY package-lock.json package-lock.json
RUN npm install
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
这三个文件必须位于上下文目录或 git 存储库中:package.json, package-lock.json, requirements.txt.
| 归档时间: |
|
| 查看次数: |
5468 次 |
| 最近记录: |