Kar*_*son 22 docker docker-compose
泊坞窗,compose.yml:
version: "3"
services:
ei:
build:
context: .
dockerfile: Dockerfile
args:
NODE_VERSION: 8
HELLO: 5
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
ARG NODE_VERSION
ARG HELLO
FROM node:$NODE_VERSION
RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"
Run Code Online (Sandbox Code Playgroud)
结果是:
km@Karls-MBP ~/dev/ve (km/ref) $ docker-compose -f docker-compose.yml build --no-cache
vertica uses an image, skipping
Building ei
Step 1/14 : ARG NODE_VERSION
Step 2/14 : ARG HELLO
Step 3/14 : FROM node:$NODE_VERSION
---> e63de54eee16
Step 4/14 : RUN echo "-> $HELLO"
---> Running in e93d89e15913
->
Removing intermediate container e93d89e15913
---> c305b277291c
Step 5/14 : RUN echo "-> $NODE_VERSION"
---> Running in 39e8e656c0bd
-> 8
Run Code Online (Sandbox Code Playgroud)
我正在摸不着为什么这不起作用.如果我更改节点版本号,则数字会更改.
Seb*_*sch 28
compose文件中定义的参数在Dockerfile上可用,但仅在之前和之后FROM.在FROM参数不可用之后:
在
ARG宣布之前,FROM是一个构建阶段之外,因此它不能在之后的任何指令使用FROM.- 来自docker docs
为什么这个论点NODE_VERSION有效?
这个论点NODE_VERSION不适用于FROM.该参数仅用于FROM(FROM node:8).在具有相同名称的图像FROM的环境变量之后.因此,您回显图像的环境变量而不是撰写文件的参数.
但您可以在以下情况后使用参数的默认值FROM:
要
ARG在第一次FROM使用之前使用声明的默认值,请在ARG构建阶段内使用没有值的指令.- 来自docker docs
ARG NODE_VERSION
FROM node:$NODE_VERSION
ARG HELLO
RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"
Run Code Online (Sandbox Code Playgroud)
要使用和显示参数中定义的节点版本,您需要重命名此参数.因此,您可以使用以下内容显示所有参数和图像的环境变量:
Dockerfile:
ARG CUSTOM_NODE_VERSION
FROM node:$CUSTOM_NODE_VERSION
ARG CUSTOM_NODE_VERSION
ARG HELLO
RUN echo "-> $HELLO" #output: 5
RUN echo "-> $NODE_VERSION" #output: 8.9.4
RUN echo "-> $CUSTOM_NODE_VERSION" #output: 8
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml:
version: "3"
services:
ei:
build:
context: .
dockerfile: Dockerfile
args:
CUSTOM_NODE_VERSION: 8
HELLO: 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6576 次 |
| 最近记录: |