如何在Dockerfile中运行read命令?

时间:2015-05-11 06:31:27

标签: bash docker dockerfile

我有以下bash脚本命令

read -r -d '' FILECONTENT <<'ENDFILECONTENT'
index index.html;

location ~ /\.ht {
    deny all;
}

ENDFILECONTENT

echo "$FILECONTENT" > /etc/nginx/common.conf

如何更改此设置以使其在Dockerfile中成功运行?

我试过了

## Common Configuration
run read -r -d '' FILECONTENT <<'ENDFILECONTENT'
index index.html;

location ~ /\.ht {
    deny all;
}

ENDFILECONTENT

run echo "$FILECONTENT" > /etc/nginx/common.conf

我在docker build -t ubuntu1404/djangoapp .

时遇到以下错误
Step 10 : RUN read -r -d '' FILECONTENT <<'ENDFILECONTENT'
 ---> Running in 69508c5aaed0
/bin/sh: 1: read: Illegal option -d
INFO[0062] The command [/bin/sh -c read -r -d '' FILECONTENT <<'ENDFILECONTENT'] returned a non-zero code: 2

2 个答案:

答案 0 :(得分:2)

#docker irc频道中的

k10d建议我使用COPY。

这有效

  1. 拥有以下

    index index.html;
    location ~ /\.ht {
      deny all;
    }
    
  2. nginx_configuration/common.conf

    nginx_configuration/是与Dockerfile

    相邻的文件夹
    1. 在Dockerfile
    2. 中键入以下内容

      ## copy the nginx config files COPY ./nginx_configuration/common.conf /etc/nginx/common.conf

      1. 按正常方式运行dockerfile。

        docker build -t ubuntu1404/djangoapp .
        

答案 1 :(得分:0)

我会按照VonC的说法做:将该脚本放入您的仓库并在运行时将其作为入口点运行,以便在开始服务之前生成您的配置。