Open3
Docker
ピン留めされたアイテム
Node.js
Dockerfile
FROM
- ベースとなるイメージを指定
- Dockerfileの最初に記述
FROM node:16
FROM node:16 AS local
RUN
- イメージをビルドする際のコマンド
RUN npm install
- シェル形式で \ (バックスラッシュ)を使うと、 RUN 命令を次の行に続けれる
RUN npm install \
npm run build
shell形式
- コマンドがシェルによって解釈され、そのシェルがコマンドを実行
- なので、コマンドがシェルの環境変数やエイリアスなどの影響を受ける
RUN npm install
exec形式
- コマンドがシェルによって解釈されることはなく、そのまま実行
- なので、コマンドがシェルの環境変数やエイリアスに影響を受けることはない
RUN ["npm", "install"]
CMD
- コンテナ実行時の何を行うかを指定する
- CMDはDockerfile中で1度しか使えない
- 複数のCMD命令があれば、最後のCMDのみ有効
CMD [ "npm", "start" ]
ENTRYPOINT
- CMDを使ってENTRYPOINTの機能を拡張し、イメージの柔軟性を高めることができる
- ENTRYPOINTでデフォルトコマンドを設定し、CMDでデフォルト引数を設定することができる
ENTRYPOINT ["python", "app.py"]
CMD ["--help"]
- 上記はコマンドライン引数を指定せずにDockerコンテナを起動すると、
python app.py --help
がデフォルトで実行される - しかし、コンテナの起動時に引数(
docker run <image> --version
など)を指定すると、デフォルトのCMD引数が置き換えられ、python app.py --version
が実行される - この方法によって、コンテナを実行する際の柔軟性が高まる
COPY
- 指定したファイルやディレクトリをコンテナ内にコピー
# index.htmlをappディレクトリ直下にコピーする
COPY index.html app/
# indexという名前のファイルをappディレクトリ直下にコピーする
COPY index.* app/
WORKDIR
-
RUN
,CMD
,ENTRYPOINT
,COPY
,ADD
を実行するディレクトリを指定 -
WORKDIR
は何度でも使用可能 -
ENV
で設定済みの環境変数を展開できる
WORKDIR /app
# pwdの出力は"/aaa/bbb/ccc"になる
WORKDIR /aaa
WORKDIR bbb
WORKDIR ccc
RUN pwd
# pwdの出力は"/path/$DIRNAME"になる
ENV DIRPATH /path
WORKDIR $DIRPATH/$DIRNAME