イメージを指定したい(FROM
)
FROM イメージ:タグ
FROM
でベースとして使うイメージ名を指定します。
イメージ名とタグはDocker Hubなどの
コンテナレジストリから探します。
タグに具体的なバージョンを指定することで、コンテナ環境の安定性を確保できます。
指定しない場合はlatest
になります。
Pythonしたい
FROM python:3.12-slim
Docker Hubにある Pythonの公式レジストリ から必要なタグを指定します。
bookworm
やbullesye
がついたタグでDebianのバージョンを指定できます。
slim
がついたタグは、不要なライブラリが省かれた軽量版です。
alpine
がついたタグはAlpine Linuxベースの超軽量版です。
BusyBoxしたい
1FROM busybox
プラットフォームしたい(--platform
)
1# x86 64bit
2# よくあるパソコン
3FROM --platform=linux/amd64 python:3.12
4
5# arm 64bit
6# Appleシリコン、Raspberry PI
7FROM --platform=linux/arm64 python:3.12
--platform
オプションで、コンテナが動作するプラットフォームを変更できます。
デフォルトはホストPCと同じプラットフォームです。
マルチステージしたい
1# ビルド用ステージ
2FROM python:3.12-alpine as builder
3WORKDIR /app
4COPY . .
5RUN poetry build
6
7# 実行用ステージ
8FROM alpine:latest
9WORKDIR /app
10COPY --from=builder /app/パッケージ名
11CMD ["./パッケージ名"]
複数のFROM
を使うことで、ビルドのステップを複数のステージに分割できます。
マルチステージをうまく使うと、最終的なイメージに不要なファイルやツールを含めずに済みます。
上記のサンプルは、
python:3.12-alpine
を使ってビルドしていますが、
最終的にはalpine:latest
でイメージを作成しています。