docker-compose build context dockerfile envar image
docker-compose build context dockerfile envar image
我想使用 docker-compose
到 build/run docker 在其 FROM
关键字中包含 envars 的文件。我现在遇到的问题是,我似乎无法通过 docker-compose 从我的环境中将 envars 传递到 docker 文件中。
docker-compose.yml
version: "3.2"
services:
api:
build: 'api/'
restart: on-failure
depends_on:
- mysql
networks:
- frontend
- backend
volumes:
- ./api/php/:/var/www/html/
'api/'
中的 Dockerfile
FROM ${DOCKER_IMAGE_API}
RUN apk update
RUN apk upgrade
RUN docker-php-ext-install mysqli
为什么?
我想这样做,这样我就可以 运行 docker-从 bash 检测主机架构并更改底层 docker主机应用程序中的文件。
FROM
指令支持由第一个 FROM
之前发生的任何 ARG
指令声明的变量。所以你可以做的是:
ARG IMAGE
FROM $IMAGE
当您 运行 构建命令时,您将传递 --build-arg 如下:
docker build -t test --build-arg IMAGE=alpine .
您还可以选择为 IMAGE
变量设置默认值,以便在未使用 --build-arg 标志时使用。
或者,如果您要使用 docker compose build 而不是 docker build(我认为这是您的情况),您可以在 docker 中指定变量-compose build --build-arg:
version: "3.9"
services:
api:
build: .
然后
docker compose build --build-arg IMAGE=alpine
我想使用 docker-compose
到 build/run docker 在其 FROM
关键字中包含 envars 的文件。我现在遇到的问题是,我似乎无法通过 docker-compose 从我的环境中将 envars 传递到 docker 文件中。
docker-compose.yml
version: "3.2"
services:
api:
build: 'api/'
restart: on-failure
depends_on:
- mysql
networks:
- frontend
- backend
volumes:
- ./api/php/:/var/www/html/
'api/'
中的 DockerfileFROM ${DOCKER_IMAGE_API}
RUN apk update
RUN apk upgrade
RUN docker-php-ext-install mysqli
为什么?
我想这样做,这样我就可以 运行 docker-从 bash 检测主机架构并更改底层 docker主机应用程序中的文件。
FROM
指令支持由第一个 FROM
之前发生的任何 ARG
指令声明的变量。所以你可以做的是:
ARG IMAGE
FROM $IMAGE
当您 运行 构建命令时,您将传递 --build-arg 如下:
docker build -t test --build-arg IMAGE=alpine .
您还可以选择为 IMAGE
变量设置默认值,以便在未使用 --build-arg 标志时使用。
或者,如果您要使用 docker compose build 而不是 docker build(我认为这是您的情况),您可以在 docker 中指定变量-compose build --build-arg:
version: "3.9"
services:
api:
build: .
然后
docker compose build --build-arg IMAGE=alpine