Dockerfile
Dockerfile reference | Documentation
The docker build command builds an image from a Dockerfile and a context
dokerfileと(path or url)であるcontext
Dockerfile を書くベスト・プラクティス — Docker-docs-ja 17.06.Beta ドキュメント
たぶん、versionがあがっても大きく変わらない
ephemeralであることを意識する(停止・破棄可能)
.dockerfileignore を利用する
不要なパッケージを(どうやって)避ける
プロセスを1つ PID 1問題もある
レイヤー数
複数行の引数を、アルファベット順などに
構築キャッシュ
dockefileからのimageを作成時には、各々の命令でキャッシュを作る?
キャッシュになる場合はどういうケースか?
An appalled silence fell over the room
Cloud Runをメインにするにあたり、Dcokerfileの知識をさらっておきたい。
KeyWord:
FROM | Dockerfile
RUN
RUN lets you execute commands inside of your Docker image.
CMDとの違いを理解する。
RUN apt-get ...
upgrade, dist-upgradeを避ける
RUNを複数に分割。 => キャッシュ問題
CMD
to provide defaults for an executing container
配列でargsを並べる
RUNとの違いは?
CMDは、docker run ... runtime時のもの。
RUNは、docker build ... build時のもの。image layer を作る
引数を指定したい場合は、CMD
ENTRTYPOINT
ENTRYPOINT のベストな使い方は、イメージにおけるメインコマンドの設定です
参考: ENTRYPOINTは「必ず実行」、CMDは「(デフォルトの)引数」 ‣ Pocketstudio.Net
LABEL
EXPOSE
container間の通信をする際にportを開ける?
ENV
Dockerfile COPY
ENTRYPOINT
CMD,RUNではだめなの?
docker: CMD とENTRYPOINT の違いを試してみた - Qiita
エントリーポイントは、shell経由せずに実行される
VOLUME
mount?
volume computer
USER
指定しないとroot,
指定するメリットは?
rootで実行するのに制限があるアプリは多い。
https://github.com/GoogleChrome/puppeteer/blob/v1.12.1/docs/troubleshooting.md#running-puppeteer-in-docker
の場合だと、Puppeteerのlaunch時に、--no-sandboxが要らない。
WORKDIR
通常は、/ になるが、WORKDIRで指定できる
RUN cd ... && 何らかの処理 のように増殖する命令の代わり使うことで、より読みやすく、
ARG
ONBUILD
STOPSIGNAL
HEALTHCHECK
Databaseやweb serverなどのcheckなどに使える
SHELL
その他
External implementation features
Dockerfile examples
.dockerignore file
build時に、無視するファイルを設定する。