Docker Golang在docker run上构build自定义操作
Go app有一个相当简单的Dockerfile:
FROM golang:onbuild EXPOSE 5000 5001
现在,当我运行它(而不是当build立图像!)我想改变一个html文件中获取静态服务的值,可能使用sed
使用先前用-e
指定的环境variables到docker运行。 我怎样才能做到这一点?
你可以尝试这样的事情:
FROM golang:onbuild COPY ./docker-entrypoint.sh / EXPOSE 5000 5001 ENTRYPOINT ["/docker-entrypoint.sh"]
注意 :你需要将你的sed脚本的入口点文件复制到容器中(在第二行完成)
和docker-entrypoint.sh与您的sed
脚本
# execute sed only **if variable exists** sed -ri "s/<title>.*/<title>$ENVIRONMENT_VARIABLE</title>/" /path_to_html_file/index.html
– 在index.html文件中用新标题replace行的简单示例(作为env。variables运行传入)
注意 :只要记住只在环境variables作为@STLMikey显示时才运行sed。
并使用$ENVIRONMENT_VARIABLE
运行docker容器
例如:
docker run -d -t -i -e ENVIRONMENT_VARIABLE='New website title' --name=container_name IMAGE_NAME
一个选项是在--entrypoint
运行期间使用--entrypoint
选项:
docker run --entrypoint /some/sh/script.sh <imagename>
其中script.sh是您的容器内的文件,并包含如下内容:
#!/bin/env bash if [[ "$myenvvar" == 'myvalue' ]]; then # sed your file here else #don't do that fi
如果您不喜欢在运行时重写入口点的想法,则可以考虑在ENTRYPOINT
使用CMD
或ENTRYPOINT
选项。
- 用于Go的Docker Remote API v1.24库
- sqlx.Connect()卡在docker alpine:latest
- 使用Docker for Development,我错过了这个观点吗?
- 去安装无法生成二进制文件
- Docker nginx和Go(Golang)分开容器。 Nginxconfiguration
- 如果标签名称中包含“。”,我如何得到一个Docker镜像的标签?
- 静态转到二进制文件与Docker – 找不到入口点
- 消息:读取ECONNRESET,堆栈:错误:从Docker容器内的Go客户端调用HapiJs服务器时读取ECONNRESET
- 使用Docker容器部署Golang Web应用程序静态文件