我有脚本:docker run -it -p 4000:4000 bitgosdk/express:latest --disablessl -e test如何把这个命令带参数放到dockerfile中?
FROM bitgosdk/express:latest
EXPOSE 4000
???发布于 2021-01-04 14:17:44
检查了你的Dockerfile contents。
在容器内部运行的命令是:
/ # ps -ef | more
PID USER TIME COMMAND
1 root 0:00 /sbin/tini -- /usr/local/bin/node /var/bitgo-express/bin/bitgo-express --disablessl -e test该命令是这样的,因为Dockerfile文件中设置的入口点是ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/node", "/var/bitgo-express/bin/bitgo-express"],参数--disablessl -e test是在运行docker run命令时提供的参数。
可以使用CMD在Dockerfile文件中设置--disablessl -e test参数
CMD ["--disablessl", "-e","test"]新Dockerfile文件
FROM bitgosdk/express:latest
EXPOSE 4000
CMD ["--disablessl", "-e","test"]请参阅此链接以了解difference between entrypoint and cmd。
发布于 2021-01-04 14:17:30
你不需要。这就是docker-compose的用途。
例如,创建一个包含如下内容的docker-compose.yml:
version: "3.8"
services:
test:
image: bitgodsdk/express:latest
command: --disablessl -e test
ports:
- "4000:4000"然后在终端中执行以下命令,访问名为test的服务的交互终端。
docker-compose run test
发布于 2021-01-05 06:56:08
即使@mchawre's answer似乎直接回答了OP的问题“从语法上讲”(就像Dockerfile被问到的那样),docker-compose.yml绝对是使docker run命令以声明的方式(YAML文件)可重现的方法,尽管它可能是自定义的。
作为对@ChrisBecke's answer的补充,请注意这个YAML文件的编写是可以自动化的。例如,参见自由/开源软件(在麻省理工学院许可下) https://github.com/magicmark/composerize
下面的代码片段是使用附带的webapp https://composerize.com/从以下docker run命令自动生成的
docker run -it -p 4000:4000 bitgosdk/express:latest
version: '3.3'
services:
express:
ports:
- '4000:4000'
image: 'bitgosdk/express:latest'我故意省略了CMD参数--disablessl -e test,因为composerize似乎不支持这些额外的参数。这可能听起来像是一个bug (和FTR a related issue is opened),但同时它可能只是被视为@DavidMaze's comment…的一个特性
https://stackoverflow.com/questions/65558209
复制相似问题