如何将参数传递给 Docker 文件(特别是 FROM 指令)
How to pass argument to Docker file ( specifically to FROM instruction)
我正在尝试将 ubuntu 版本作为参数,值应该从 docker-compose 文件中获取。
撰写文件:
version: '2'
services:
rahul:
container_name: rahul_container
build :
context: .
dockerfile: Dockerfile
args:
- uv=ubuntu:16.04
image : rahul_image
Docker 文件:
FROM scratch
ARG uv
FROM $uv
输出:错误:服务 'rahul' 构建失败:解析引用时出错:“$uv”不是有效的 repository/tag
看起来值没有被替换。
尝试使用 FROM "${uv}" 但同样的错误
感谢@user2915097。
我创建了 shell 脚本,它将创建 docker 文件并放置我想要的参数...
#!/bin/bash
echo
gcc_v=
echo $gcc_v
g_v=0
cat > Dockerfile <<EOL
FROM
EOL
while IFS='' read -r line || [[ -n "$line" ]]; do
g_v=$((g_v+1))
if [[ ($g_v == 14) ]]; then
echo "$line" >> Dockerfile
else
echo "$line" >> Dockerfile
fi
done < "docker_gcc"
docker build -t mygccapp .
$ ./tesh.sh ubuntu.16.04 6.3.0
输出:
Dockerfile
FROM ubuntu:16.04
.
.
.
我正在尝试将 ubuntu 版本作为参数,值应该从 docker-compose 文件中获取。
撰写文件:
version: '2'
services:
rahul:
container_name: rahul_container
build :
context: .
dockerfile: Dockerfile
args:
- uv=ubuntu:16.04
image : rahul_image
Docker 文件:
FROM scratch
ARG uv
FROM $uv
输出:错误:服务 'rahul' 构建失败:解析引用时出错:“$uv”不是有效的 repository/tag
看起来值没有被替换。 尝试使用 FROM "${uv}" 但同样的错误
感谢@user2915097。 我创建了 shell 脚本,它将创建 docker 文件并放置我想要的参数...
#!/bin/bash
echo
gcc_v=
echo $gcc_v
g_v=0
cat > Dockerfile <<EOL
FROM
EOL
while IFS='' read -r line || [[ -n "$line" ]]; do
g_v=$((g_v+1))
if [[ ($g_v == 14) ]]; then
echo "$line" >> Dockerfile
else
echo "$line" >> Dockerfile
fi
done < "docker_gcc"
docker build -t mygccapp .
$ ./tesh.sh ubuntu.16.04 6.3.0
输出: Dockerfile
FROM ubuntu:16.04
.
.
.