mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
fix(content): harden Docker practice guide
This commit is contained in:
@@ -72,6 +72,8 @@ jobs:
|
||||
ghcr.io/${{ github.repository }}:latest
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
provenance: mode=max
|
||||
sbom: true
|
||||
```
|
||||
|
||||
关键说明:
|
||||
@@ -79,6 +81,7 @@ jobs:
|
||||
* `docker/login-action` 负责认证,支持 Docker Hub、GHCR、ECR 等主流 Registry。
|
||||
* `cache-from` / `cache-to` 使用 GitHub Actions 原生缓存(`type=gha`),无需额外配置即可加速增量构建。
|
||||
* 标签同时使用 commit hash 和 `latest`,兼顾版本追溯与部署便利。
|
||||
* `provenance: mode=max` 和 `sbom: true` 会把构建来源证明和 SBOM 附加到推送的镜像上;只做本地 `load: true` 的构建无法完整保留这些 attestation。
|
||||
|
||||
### 21.2.3 最佳实践
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
本小节以 `GitHub` + `Drone` 来演示 `Drone` 的工作流程。
|
||||
当然在实际开发过程中,你的代码也许不在 GitHub 托管,那么你可以尝试使用 `Gogs` + `Drone` 来进行 CI/CD。
|
||||
|
||||
> 安全提示:Docker runner 如果挂载宿主机 `/var/run/docker.sock`,流水线就具备近似宿主机 root 的控制能力。下面配置只适合可信代码、单租户、本地演示环境;生产环境应使用隔离的临时 runner/虚拟机、Kubernetes runner、rootless 方案或更严格的权限边界,并为不同项目隔离密钥。
|
||||
|
||||
### 21.3.1 关联项目
|
||||
|
||||
在 GitHub 新建一个名为 `drone-demo` 的仓库。
|
||||
|
||||
@@ -557,6 +557,8 @@ client-output-buffer-limit pubsub 32mb 8mb 60
|
||||
|
||||
**三层微服务架构示例:**
|
||||
|
||||
> 下面示例聚焦服务拓扑、网络、健康检查和资源限制。为便于阅读,密码仍通过环境变量串接;生产环境应改用 Compose secrets、外部密钥系统或云厂商密钥服务,并避免把敏感值写入 `DATABASE_URL` / `REDIS_URL`。
|
||||
|
||||
```yaml
|
||||
services:
|
||||
# 前端服务
|
||||
@@ -564,7 +566,6 @@ services:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
container_name: frontend
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
@@ -586,7 +587,6 @@ services:
|
||||
build:
|
||||
context: ./api
|
||||
dockerfile: Dockerfile
|
||||
container_name: api
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
@@ -619,7 +619,6 @@ services:
|
||||
# PostgreSQL 数据库
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: postgres
|
||||
environment:
|
||||
POSTGRES_DB: myappdb
|
||||
POSTGRES_USER: appuser
|
||||
@@ -641,7 +640,6 @@ services:
|
||||
# Redis 缓存
|
||||
redis:
|
||||
image: redis:8-alpine
|
||||
container_name: redis
|
||||
command: ["sh", "-c", "redis-server --appendonly yes --requirepass \"$$REDIS_PASSWORD\""]
|
||||
environment:
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD:?set REDIS_PASSWORD}
|
||||
@@ -659,7 +657,6 @@ services:
|
||||
# Nginx 反向代理
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: nginx
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
|
||||
@@ -25,6 +25,7 @@ services:
|
||||
depends_on:
|
||||
- drone-server
|
||||
volumes:
|
||||
# Trusted single-tenant demo only: Docker socket access is host-root equivalent.
|
||||
- /var/run/docker.sock:/var/run/docker.sock:rw
|
||||
environment:
|
||||
- DRONE_RPC_PROTO=http
|
||||
|
||||
Reference in New Issue
Block a user