イメージを指定したい(FROM

FROM イメージ:タグ

FROMでベースとして使うイメージ名を指定します。 イメージ名とタグはDocker Hubなどの コンテナレジストリから探します。

タグに具体的なバージョンを指定することで、コンテナ環境の安定性を確保できます。 指定しない場合はlatestになります。

Pythonしたい

FROM python:3.12-slim

Docker Hubにある Pythonの公式レジストリ から必要なタグを指定します。

bookwormbullesyeがついたタグで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でイメージを作成しています。