首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换dockerfile中cmd的第一个值

替换dockerfile中cmd的第一个值
EN

Stack Overflow用户
提问于 2017-09-15 14:28:38
回答 1查看 164关注 0票数 0

我正在测试与码头,并试图创建自己的码头形象。

我的第一个Dockerfile只是以一个ubuntu作为基本的形象,并安装牛仔。

Dockerfile 1:

代码语言:javascript
复制
FROM ubuntu:latest
RUN apt-get update && apt-get -y install cowsay
ENTRYPOINT ["usr/games/cowsay"]

我用

代码语言:javascript
复制
docker build -t test/cowsay .

并且可以用

代码语言:javascript
复制
docker run test/cowsay Hello World

在接下来的步骤中,我想要创建一个图像,如果没有额外的参数与码头调用,它将默认文本放在牛仔中。对于默认文本,我使用“财富”。

Dockerfile 2

代码语言:javascript
复制
FROM test/cowsay:latest
RUN apt-get update && apt-get -y install fortune
ENTRYPOINT []
CMD /usr/games/fortune -s | /usr/games/cowsay -f tux

我用

代码语言:javascript
复制
docker build -t test/fortune .

然后用

代码语言:javascript
复制
docker run test/fortune


 ________________________________________
/ You possess a mind not merely twisted, \
\ but actually sprained.                 /
 ----------------------------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

但是,至少我想使用“财富”中的默认文本,只有在坞调用中没有附加参数的情况下。

如果我打字

码头运行测试/财富你好

/usr/games/fortune -s必须替换为Hello

代码语言:javascript
复制
 _______
< Hello >
 -------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

有谁知道如何解决我的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 14:49:00

您必须使用bash脚本和ENTRYPOINT来完成这一任务。

代码语言:javascript
复制
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT /entrypoint.sh

entrypoint.sh

代码语言:javascript
复制
if [ $# -eq 0 ]
  then
    /usr/games/fortune -s | /usr/games/cowsay -f tux
else
   echo $@ | /usr/games/cowsay -f tux
fi
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46241972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档