如何将参数传递给Docker文件(特别是FROM指令)

时间:2017-03-22 16:33:58

标签: docker docker-compose dockerfile docker-registry

我正在尝试将ubuntu版本作为参数,而值应该来自docker-compose文件。

撰写文件:

version: '2'
services:
 rahul:
  container_name: rahul_container
  build :
   context: .
   dockerfile: Dockerfile
   args:
    - uv=ubuntu:16.04
  image : rahul_image

Dockerfile:

FROM scratch
ARG uv
FROM $uv

输出:错误:服务'rahul'无法构建:解析引用时出错:“$ uv”不是有效的存储库/标记

看起来价值没有被取代。 尝试使用FROM“$ {uv}”但同样的错误

2 个答案:

答案 0 :(得分:1)

今天不可能。问题Allow using ENV or ARG in FROM #18119解决了您自2015年11月20日起的需求。今天它已经开放。

答案 1 :(得分:0)

感谢@ user2915097。 我创建了shell脚本,它将创建docker文件并放置我想要的参数......

#!/bin/bash

echo $1
gcc_v=$2
echo $gcc_v
g_v=0
cat > Dockerfile <<EOL
FROM $1
EOL
while IFS='' read -r line || [[ -n "$line" ]]; do
   g_v=$((g_v+1))
   if [[ ($g_v == 14) ]]; then
        echo "$line$2" >> 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
.
.
.