学习优先级:★★★☆☆

易用性:★★★☆☆

Docker Compose 允许从 Dockerfile 自动创建服务,通过在配置中使用 build 选项。这在服务需要基于自定义镜像运行时非常实用。

在 docker-compose.yml 文件中指定 build,Docker Compose 可以使用 Dockerfile 创建自定义镜像并启动相应的服务。以下是一个从 Dockerfile 创建 Web 服务的简单示例。

示例代码

version: '3.8'

services:
  web:
    build: ./web
    ports:
      - "8080:80"

Dockerfile(位于 web 文件夹中)

# 使用 NGINX 基础镜像
FROM nginx:alpine

# 将本地的 index.html 文件复制到容器的网页根目录
COPY ./index.html /usr/share/nginx/html/index.html

index.html 文件内容

<!DOCTYPE html>
<html>
<head><title>Hello Docker Compose</title></head>
<body><h1>Hallo, das ist ein NGINX-Server!</h1></body>
</html>

执行结果

运行 Docker Compose 后,它会自动从 web 文件夹中的 Dockerfile 构建镜像,并启动 NGINX 服务器,该服务器可通过 localhost:8080 访问。index.html 文件被复制到容器中,并作为启动页面显示。

build 指令允许从 Dockerfile 创建自定义镜像。开发人员可以基于公开可用的基础镜像(如 NGINX、Node.js 等)创建和自定义自己的镜像。这是优化服务以适应特定应用程序的常见做法。

补充说明

自动构建镜像是 Docker Compose 的一项重要功能,尤其是对于使用 CI/CD 管道的团队。它确保所有开发人员使用相同的环境,并且可以轻松集成对基础应用程序或环境的更改。通过将文件复制到容器中,可以轻松地提供应用程序和配置。