-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-bake.hcl
More file actions
82 lines (69 loc) · 2.7 KB
/
Copy pathdocker-bake.hcl
File metadata and controls
82 lines (69 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# =============================================================================
# a-blog cms Docker Images — ビルド定義(単一の真実の源)
#
# 対応PHPバージョンを増減するときは PHP_VERSIONS を編集するだけでよい。
# CI もローカルもこの1ファイルを参照する。
#
# ローカルで全バージョンをビルド(ホストのアーキのみ):
# docker buildx bake
#
# 単一バージョンをローカルに load して試す(Apple Silicon 例):
# docker buildx bake acms-dev-8-3 --set "*.platform=linux/arm64" --load
#
# マルチアーキで push(CI 相当):
# docker buildx bake --push
#
# 展開結果(ターゲット・タグ)の確認:
# docker buildx bake --print
# =============================================================================
# 公開先の Docker Hub 名前空間。実際に作成する組織名に合わせること
# (appleple が取得済みかは要確認。異なる場合はこの1行を変更)。
variable "REGISTRY" {
default = "appleple"
}
# このリポジトリが作るのは「実行環境のみ(a-blog cms 非同梱)」のイメージ。
variable "IMAGE_NAME" {
default = "acms-dev"
}
# latest タグを付与するバージョン
variable "PHP_LATEST" {
default = "8.5"
}
# PR プレビュー用のタグ接尾辞(CI が -<PR番号> を渡す想定。通常は空)
variable "PR_TAG" {
default = ""
}
# ビルド対象のマルチアーキ。CI では push と併せてこのまま使う。
variable "PLATFORMS" {
default = ["linux/amd64", "linux/arm64"]
}
# ---- ここがバージョン一覧の唯一の定義箇所 ----
variable "PHP_VERSIONS" {
default = ["7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4", "8.5"]
}
group "default" {
targets = ["acms-dev"]
}
target "acms-dev" {
name = "acms-dev-${replace(php, ".", "-")}"
context = "."
dockerfile = "Dockerfile"
matrix = {
php = PHP_VERSIONS
}
args = {
PHP_VERSION = php
}
platforms = PLATFORMS
# latest タグは本番公開時(PR_TAG が空)のときだけ付与する。
# PR プレビューでは未文書化の latest-<PR番号> タグが公開されるのを防ぐ。
tags = concat(
["${REGISTRY}/${IMAGE_NAME}:${php}${PR_TAG}"],
(php == PHP_LATEST && PR_TAG == "") ? ["${REGISTRY}/${IMAGE_NAME}:latest"] : []
)
labels = {
"org.opencontainers.image.title" = "a-blog cms dev runtime (PHP ${php})"
"org.opencontainers.image.source" = "https://github.com/appleple/acms-development-docker-images"
"org.opencontainers.image.description" = "Apache + PHP ${php} runtime for a-blog cms development (a-blog cms is NOT bundled; mount your project)"
}
}