Skip to content

Commit ac60247

Browse files
committed
update
1 parent 28b5fc9 commit ac60247

File tree

21 files changed

+751
-91
lines changed

21 files changed

+751
-91
lines changed

.env.local

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ FLUTTER_DEVICE_ID_ANDROID=android-device-id
1414
NEW_PACKAGE_NAME=demo
1515

1616

17-
18-
17+
# github packages push token:
18+
GITHUB_PUSH_TOKEN=github-push-token

dockerfile/_debian/12/.dockerignore

Whitespace-only changes.

dockerfile/_debian/12/Dockerfile

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# FROM debian:12 AS build
2+
FROM --platform=$BUILDPLATFORM debian:12 AS build
3+
4+
# 维护者信息
5+
LABEL maintainer="hhglory@outlook.com"
6+
7+
WORKDIR /app
8+
9+
################################################################
10+
11+
# env
12+
ENV TZ=Asia/Shanghai
13+
ENV TIME_ZONE=Asia/Shanghai
14+
ENV PATH="/opt/venv/bin:$PATH"
15+
16+
# 设置环境变量,以避免在安装软件包时交互提示
17+
ENV DEBIAN_FRONTEND=noninteractive
18+
19+
################################################################
20+
21+
# python3 python3-dev python3-pip curl cmake
22+
RUN apt update \
23+
&& apt install -y --no-install-recommends \
24+
build-essential \
25+
tini \
26+
tzdata \
27+
python3-venv \
28+
&& apt clean \
29+
&& rm -rf /var/lib/apt/lists/*
30+
31+
################################################################
32+
33+
# python 3.11.2 + venv
34+
RUN python3 -m venv /opt/venv
35+
36+
# install uv
37+
RUN python3 -m pip install --upgrade pip
38+
RUN pip install uv --upgrade
39+
40+
################################################################
41+
42+
# user project
43+
44+
45+
################################################################
46+
47+
48+
# ENTRYPOINT ["/tini", "--"]
49+
ENTRYPOINT ["/usr/bin/tini", "--"]
50+
51+
CMD ["uv run python3"]
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#FROM debian:12 AS build
2+
FROM --platform=$BUILDPLATFORM debian:12 AS build
3+
4+
# 维护者信息
5+
LABEL maintainer="hhglory@outlook.com"
6+
7+
8+
WORKDIR /app
9+
10+
################################################################
11+
12+
# env
13+
ENV TZ=Asia/Shanghai
14+
ENV TIME_ZONE=Asia/Shanghai
15+
ENV PATH="/opt/venv/bin:$PATH"
16+
17+
# 设置环境变量,以避免在安装软件包时交互提示
18+
ENV DEBIAN_FRONTEND=noninteractive
19+
20+
################################################################
21+
22+
# python3 python3-dev python3-pip curl cmake
23+
RUN apt update \
24+
&& DEBIAN_FRONTEND=noninteractive \
25+
apt install -y --no-install-recommends \
26+
build-essential \
27+
tini \
28+
tzdata \
29+
python3-venv \
30+
&& apt clean \
31+
&& rm -rf /var/lib/apt/lists/*
32+
33+
################################################################
34+
35+
# python 3.11.2 + venv
36+
RUN python3 -m venv /opt/venv
37+
38+
# install uv
39+
RUN python3 -m pip install --upgrade pip
40+
RUN pip install uv --upgrade
41+
42+
################################################################
43+
44+
# user project
45+
46+
47+
################################################################
48+
49+
50+
# ENTRYPOINT ["/tini", "--"]
51+
ENTRYPOINT ["/usr/bin/tini", "--"]
52+
53+
CMD ["uv run python3"]

dockerfile/_debian/Taskfile.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
version: "3"
2+
3+
tasks:
4+
docker:
5+
aliases: ["d"]
6+
cmds:
7+
- docker {{.CLI_ARGS}}
8+
9+
docker:build:
10+
cmds:
11+
- docker build {{.CLI_ARGS}}
12+
13+
build:12:
14+
aliases: ["b12"]
15+
cmds:
16+
- docker build -f Dockerfile -t {{.IMAGE}}:{{.TAG}} .
17+
dir: "12"
18+
vars:
19+
IMAGE: "debian"
20+
TAG: "12-uv"
21+
22+
run:12:
23+
aliases: ["r12"]
24+
cmds:
25+
- docker run -it --rm {{.IMAGE}}:{{.TAG}} bash
26+
dir: "12"
27+
vars:
28+
IMAGE: "debian"
29+
TAG: "12-uv"
30+
31+
login:
32+
cmds:
33+
- echo $GITHUB_PUSH_TOKEN
34+
- echo $GITHUB_PUSH_TOKEN | docker login ghcr.io -u hhstore --password-stdin
35+
dotenv:
36+
- .env
37+
- ../../.env
38+
- ../../../.env
39+
40+
tag:
41+
cmds:
42+
- docker tag {{.IMAGE}}:{{.TAG}} ghcr.io/{{.ORG}}/{{.IMAGE}}:{{.TAG}}
43+
vars:
44+
IMAGE: "debian"
45+
TAG: "12-uv"
46+
ORG: "better-sre" # "hhstore"
47+
48+
rel:
49+
aliases: ["push"]
50+
cmds:
51+
- docker tag {{.IMAGE}}:{{.TAG}} ghcr.io/{{.ORG}}/{{.IMAGE}}:{{.TAG}}
52+
- docker push ghcr.io/{{.ORG}}/{{.IMAGE}}:{{.TAG}}
53+
vars:
54+
IMAGE: "debian"
55+
TAG: "12-uv"
56+
ORG: "better-sre" # "hhstore"
57+
58+
clean:
59+
aliases: ["c", "rm"]
60+
cmds:
61+
- docker image prune -f
62+
- docker images
63+
- docker container prune -f
64+
- docker ps -a

dockerfile/_debian/readme.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# Debian
2+
3+
## 🔥 自主构建镜像
4+
5+
- ✅ 集成:
6+
- `uv`: 用于管理 python 环境
7+
- `tini`: 解决容器退出后, 子进程无法正常退出的问题
8+
- ✅ 镜像: `ubuntu:22-uv`, 相比 `debian:12-uv` 占用空间更小.
9+
10+
```ruby
11+
# run:
12+
task b12
13+
14+
# size:
15+
❯ docker images
16+
REPOSITORY TAG IMAGE ID CREATED SIZE
17+
ubuntu 22-uv e2a45809fec8 9 seconds ago 430MB
18+
debian 12-uv 18d0a5b7849f 28 minutes ago 577MB
19+
20+
# 测试容器效果:
21+
docker run -it --name debain12-test debian:12-uv bash
22+
# or:
23+
docker run --rm -it debian:12-uv bash
24+
25+
# 进入:
26+
docker exec -it debain12-test bash
27+
28+
```
29+
30+
## 基镜像版本
31+
32+
- [debian](https://hub.docker.com/_/debian)
33+
34+
### Slim
35+
36+
- 特点:基于Debian,但只包含必要的软件包,以减少镜像大小。
37+
- 适用场景:适用于那些希望保持Debian稳定性同时又需要较小镜像的应用。
38+
- 典型大小(以Python为例):
39+
- python:3.11-slim: 大约110 MB
40+
- node:18-slim: 大约110 MB
41+
- openjdk:17-slim: 大约110 MB
42+
43+
### Bookworm (Debian 12)
44+
45+
- 最新稳定版:提供最新的安全更新和软件包。
46+
- 适用场景:适合追求最新特性和安全性的项目。
47+
48+
### Bullseye (Debian 11)
49+
50+
- 长期支持:提供长期的支持和维护。
51+
- 适用场景:适合那些需要稳定性和长期支持的企业级应用。
52+
53+
## 镜像
54+
55+
```ruby
56+
57+
58+
docker pull debian
59+
60+
61+
docker pull debian:11
62+
docker pull debian:12
63+
64+
65+
#
66+
docker pull debian:11-slim
67+
docker pull debian:12-slim
68+
69+
70+
```
71+
72+
## 镜像大小对比
73+
74+
```ruby
75+
docker images
76+
REPOSITORY TAG IMAGE ID CREATED SIZE
77+
78+
arm64v8/ubuntu 22.04 1c48965c5eed 7 days ago 69.2MB
79+
ubuntu 22.04 1c48965c5eed 7 days ago 69.2MB
80+
81+
debian 12 827eb53164e3 8 days ago 139MB
82+
debian 12-slim d7d888c58aab 8 days ago 97.2MB
83+
84+
```
85+
86+
## Reference
87+
88+
### 参考 dockerfile
89+
90+
- [uv + ubuntu](https://github.com/astral-sh/uv/blob/main/Dockerfile)
91+
92+
### 讨论
93+
94+
- [2025 年了,大家服务器用的什么 Linux 版本](https://v2ex.com/t/1105283?p=3)
95+
- [大家制作 docker 镜像时操作系统层通常用哪个镜像?](https://www.v2ex.com/t/931409)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# FROM debian:12 AS build
2+
FROM --platform=$BUILDPLATFORM ubuntu:22.04 AS build
3+
4+
# 维护者信息
5+
LABEL maintainer="hhglory@outlook.com"
6+
7+
WORKDIR /app
8+
9+
################################################################
10+
11+
# env
12+
ENV TZ=Asia/Shanghai
13+
ENV TIME_ZONE=Asia/Shanghai
14+
ENV PATH="/opt/venv/bin:$PATH"
15+
16+
# 设置环境变量,以避免在安装软件包时交互提示
17+
ENV DEBIAN_FRONTEND=noninteractive
18+
19+
################################################################
20+
21+
# python3 python3-dev python3-pip curl cmake
22+
RUN apt update \
23+
&& DEBIAN_FRONTEND=noninteractive \
24+
apt install -y --no-install-recommends \
25+
build-essential \
26+
tini \
27+
tzdata \
28+
python3-venv \
29+
&& apt clean \
30+
&& rm -rf /var/lib/apt/lists/*
31+
32+
################################################################
33+
34+
# python 3.11.2 + venv
35+
RUN python3 -m venv /opt/venv
36+
37+
# install uv
38+
RUN python3 -m pip install --upgrade pip
39+
RUN pip install uv --upgrade
40+
41+
################################################################
42+
43+
# user project
44+
45+
46+
################################################################
47+
48+
49+
# ENTRYPOINT ["/tini", "--"]
50+
ENTRYPOINT ["/usr/bin/tini", "--"]
51+
52+
CMD ["uv run python3"]

dockerfile/_ubuntu/Taskfile.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
version: "3"
2+
3+
tasks:
4+
docker:
5+
aliases: ["d"]
6+
cmds:
7+
- docker {{.CLI_ARGS}}
8+
9+
docker:build:
10+
cmds:
11+
- docker build {{.CLI_ARGS}}
12+
13+
# for python + uv
14+
build:22:
15+
aliases: ["b22"]
16+
cmds:
17+
- docker build -f Dockerfile.python -t {{.IMAGE}}:{{.TAG}} .
18+
dir: "22.04"
19+
vars:
20+
IMAGE: "ubuntu"
21+
TAG: "22-uv"
22+
23+
run:22:
24+
aliases: ["r22"]
25+
cmds:
26+
- docker run -it --rm {{.IMAGE}}:{{.TAG}} bash
27+
dir: "22.04"
28+
vars:
29+
IMAGE: "ubuntu"
30+
TAG: "22-uv"
31+
32+
login:
33+
cmds:
34+
- echo $GITHUB_PUSH_TOKEN
35+
- echo $GITHUB_PUSH_TOKEN | docker login ghcr.io -u hhstore --password-stdin
36+
dotenv:
37+
- .env
38+
- ../../.env
39+
- ../../../.env
40+
41+
tag:
42+
cmds:
43+
- docker tag {{.IMAGE}}:{{.TAG}} ghcr.io/{{.ORG}}/{{.IMAGE}}:{{.TAG}}
44+
vars:
45+
IMAGE: "ubuntu"
46+
TAG: "22-uv"
47+
ORG: "better-sre" # "hhstore"
48+
49+
rel:
50+
aliases: ["push"]
51+
cmds:
52+
- docker tag {{.IMAGE}}:{{.TAG}} ghcr.io/{{.ORG}}/{{.IMAGE}}:{{.TAG}}
53+
- docker push ghcr.io/{{.ORG}}/{{.IMAGE}}:{{.TAG}}
54+
vars:
55+
IMAGE: "ubuntu"
56+
TAG: "22-uv"
57+
ORG: "better-sre" # "hhstore"
58+
59+
clean:
60+
aliases: ["c", "rm"]
61+
cmds:
62+
- docker image prune -f
63+
- docker images
64+
- docker container prune -f
65+
- docker ps -a

0 commit comments

Comments
 (0)