在 dockerfile 中运行 sed 以用构建 arg 值替换文本

Rya*_*sch 7 sed dockerfile

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

我的 nginx Dockerfile 如下所示:

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
Run Code Online (Sandbox Code Playgroud)

我的 nginx.conf 文件看起来像这样(注意:为简单起见,删除了多数)

http {

   sendfile on;

   upstream epd {
      server localhost:8080;
   }

   # ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

我已经尝试了一些其他的东西,但我似乎无法让这个工作。我可以确认 DOCKER_HOST 构建参数正在通过我的 docker compose 脚本进入 Dockerfile,因为我可以回应这一点。

非常感谢您的任何答复...

Mar*_*cus 10

用双引号替换'周围的单s/localhost/${DOCKER_HOST}/g引号"。变量不会插入单引号内。