我正在尝试使用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,因为我可以将其回显。
非常感谢您的答复...
答案 0 :(得分:1)
Replace the single quotes '
around s/localhost/${DOCKER_HOST}/g
with double quotes "
. Variables will not be interpolated within single quotes.