アナウンス記事
リファレンス
例
従来のDockerfile
公式のベストプラクティスに従って、複数のapt-getを&&で繋いで一つのRUNに収めています。
Dockerfile.slim
FROM node:slim
RUN apt-get update && apt-get install -y \
tini \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/usr/bin/tini", "--"]
USER node
WORKDIR /home/node
COPY --chown=node:node package.json package-lock.json ./
RUN npm install --production && npm cache clean --force
COPY --chown=node:node index.ts ./
CMD ["node_modules/.bin/ts-node", "index.ts"]
これからのDockerfile
複数のapt-getを書く箇所がヒアドキュメントを使ってより見やすく書くことができるようになりました。
現時点では、先頭に# syntax=docker/dockerfile:1.3-labs
が必要な点と、エディタのシンタックスハイライトが対応していない場合があるという点で注意が必要です。
Dockerfile.slim
# syntax=docker/dockerfile:1.3-labs
FROM node:slim
RUN <<eot
apt-get update
apt-get install -y \
tini
apt-get clean
rm -rf /var/lib/apt/lists/*
eot
ENTRYPOINT ["/usr/bin/tini", "--"]
USER node
WORKDIR /home/node
COPY --chown=node:node package.json package-lock.json ./
RUN npm install --production && npm cache clean --force
COPY --chown=node:node index.ts ./
CMD ["node_modules/.bin/ts-node", "index.ts"]
わかりやすい差分