私が所有していないベースDockerイメージがいくつかあります(そのため、変更できません)。ただし、追加のものがインストールされた状態で、それらから新しいイメージを作成しています。
私が理解できないのは、ベースイメージのCMD(またはENTRYPOINT)をコピーするようにdockerfileに指示する方法です。このようなもの:
FROM other:latest
RUN my-extra-install
CMD <use-the-CMD-from-base-image>
私がやりたいことを実行するためのCMDコマンドの直接構文はないと思います。回避策があるかどうか疑問に思っています。
新しいDockerfileで空白のままにすると、ベースイメージから継承されます。
例えば:
ベース
FROM ubuntu
CMD ["echo", "AAA"]
layer1
FROM base
上記のイメージをビルドしてlayer1
を実行すると、次のようになります。
$ Sudo docker run -it layer1
AAA
@Vorは正しいです。しかし、念のため
# Dockerfile
FROM nginx:stable-Alpine
ENTRYPOINT ["/docker-entrypoint.sh"]
COPY ./docker-entrypoint.sh /
そして
# docker-entrypoint.sh
#!/usr/bin/env sh
set -e
exec "$@"
nginx:stable-Alpine
のデフォルトのCMDはexec "$@"
では実行されません。
Dockerfileに自分でデフォルトのnginx-AlpineのCMD
を書き込む必要があります(!)
# Dockerfile
FROM nginx:stable-Alpine
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
COPY ./docker-entrypoint.sh /
またはdocker-entrypoint.shを変更します
# docker-entrypoint.sh
#!/usr/bin/env sh
set -e
exec nginx -g "daemon off;"
それが役に立てば幸い