docker 什么是背景:.在码头作曲?

yqyhoc1h  于 2023-02-11  发布在  Docker
关注(0)|答案(2)|浏览(70)

我正在尝试学习docker并创建了我的第一个docker组合文件。基本上我正在尝试创建一个Django Web微服务并使用docker组合文件来管理它。以下是我的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"

我不明白context: .的用法谁能给我解释一下

brc7rcf0

brc7rcf01#

    • 背景**

包含Dockerfile的目录的路径,或者git仓库的url。
当提供的值是相对路径时,它被解释为相对于合成文件的位置。此目录也是发送到Docker守护程序的构建上下文。
Compose使用生成的名称构建和标记它,然后使用该图像。

build:
  context: ./dir

这意味着,它是包含Dockerfile文件的目录的路径。它的目的是为服务构建一个新的映像。
参考:https://docs.docker.com/compose/compose-file/compose-file-v3/
在您的情况下:

context: .

Dockerfile文件应存在于当前目录中(与docker-compose.yml文件位于同一文件夹中)。

8i9zcol2

8i9zcol22#

从正式文件中我们知道:
context定义了包含Dockerfile的目录的路径,或者git仓库的URL。
在您的示例中,.是表示当前目录的相对路径,您在该目录中运行docker-compose命令,Compose可以在该目录中找到Dockerfile(显然也可以找到docker-compose.yaml文件)。
Dockerfile也可以在其他位置使用dockerfile关键字,如this example中的关键字:

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

这里额外的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

这三个文件必须在context目录或git仓库中:一米六氮一x一米七氮一x一米八氮一x。

相关问题