在dockerfile中运行sed以将文本替换为build arg值

时间:2019-01-07 13:44:49

标签: sed dockerfile

我正在尝试使用sed将nginx.conf中的文本“ localhost”替换为Docker主机的IP地址(仅供参考。在本地使用docker机,该机在192.168.99.100上运行docker)。

我的nginx Dockerfile看起来像这样:

     private void ComboBox_OnSelectCabinChanged(object sender, RoutedEventArgs e)
    {
        var combo = (ComboBox)sender;

        if (combo != null && combo.IsDropDownOpen)
        {
            ((ApplicationsViewModel)DataContext).SelectedCabin = (Guid?)sender;
            combo.IsDropDownOpen = false;
        }
    }

我的nginx.conf文件如下所示(注意:为简单起见,删除了大多数文件)

FROM nginx:alpine
ARG DOCKER_HOST
COPY ./nginx.conf /etc/nginx/nginx.conf
RUN sed -i 's/localhost/${DOCKER_HOST}/g' /etc/nginx/nginx.conf
EXPOSE 80

我期望将“ localhost”替换为“ 192.168.99.100”,但实际上将其替换为“ $ {DOCKER_HOST}”。这会导致错误

  

在上游“ $ {DOCKER_HOST}:8080”中找不到主机

我已经尝试了其他一些方法,但是似乎无法正常工作。我可以确认DOCKER_HOST build arg正在通过我的docker compose脚本进入Dockerfile,因为我可以将其回显。

非常感谢您的答复...

1 个答案:

答案 0 :(得分:1)

Replace the single quotes ' around s/localhost/${DOCKER_HOST}/g with double quotes ". Variables will not be interpolated within single quotes.