gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:44:56 26 4
gpt4 key购买 nike

我正在尝试使用 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

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

sendfile on;

upstream epd {
server localhost:8080;
}

# ...
}

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

host not found in upstream "${DOCKER_HOST}:8080"



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

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

最佳答案

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

关于sed - 在 dockerfile 中运行 sed 以用构建 arg 值替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54075585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com