📜  docker-compose 使用 args 构建图像 (1)

📅  最后修改于: 2023-12-03 15:14:46.512000             🧑  作者: Mango

Docker-Compose 使用 Args 构建图像

Docker-Compose 是 Docker 的一个工具,用于管理多个 Docker 容器的项目。它使用一个 YAML 文件来配置应用程序的服务,并通过命令行工具来管理这些服务。

当我们构建 Docker 镜像时,我们可能需要传递一些参数来控制镜像的构建过程。这些参数可以是环境变量,也可以是通过命令行传递的值。

在 Docker-Compose 中,我们可以使用 args 指令来传递参数来构建镜像。这个指令可以在 Dockerfile 中使用,并允许我们在构建时间设置环境变量。

下面是示例:

version: '3'
services:
  web:
    build:
      context: .
      args:
        - NODE_ENV=production
        - SOME_BUILD_ARG=foobar

在这个示例中,我们使用了 build 指令来说明我们想要构建一个 Docker 镜像。我们指定了 context,它告诉 Docker-Compose 在构建时使用的上下文路径。

我们使用 args 指令来传递参数到我们的 Dockerfile 中。在这个示例中,我们传递了两个参数。

当我们在 Dockerfile 中使用这些参数时,可以使用 ${} 语法来替代传递进来的值。比如,当我们在 Dockerfile 中使用 ARG NODE_ENV 时,我们可以使用 ${NODE_ENV} 来引用它。

FROM node:${NODE_VERSION}-alpine

ARG NODE_ENV
ENV NODE_ENV $NODE_ENV

ARG SOME_BUILD_ARG
RUN echo $SOME_BUILD_ARG

在上面的 Dockerfile 中,我们使用了 ARG 指令来定义了 NODE_ENV 和 SOME_BUILD_ARG 这两个参数。然后我们在 Dockerfile 中使用 ${} 语法来引用这些参数。

在这个示例中,我们使用了 NODE_ENV 来设置环境变量,而我们在构建过程中仅仅输出 OurBuildArg 这个值到 STDOUT 中。

注意,如果你在 Dockerfile 中使用了一个未定义的变量,并且没有在 Docker-Compose 中传递这个变量,那么构建过程将会失败。

通过使用 args 指令,我们可以有效地通过 Docker-Compose 来控制在 Docker 镜像构建中使用的变量。这个特性使得我们在构建 Docker 镜像时更加灵活,同时也使得构建过程更容易重用。