mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
fix(content): harden Compose credential examples
This commit is contained in:
@@ -96,14 +96,14 @@ $ touch Gemfile.lock
|
|||||||
|
|
||||||
### 11.7.5 步骤 3:创建 compose.yaml
|
### 11.7.5 步骤 3:创建 compose.yaml
|
||||||
|
|
||||||
配置如下:
|
配置如下。下面为了本地练习使用环境变量占位;不要把真实数据库密码写进 `compose.yaml`、`.env` 或 Git,生产环境应使用 Compose secrets、Rails credentials 或平台密钥管理。
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
db:
|
db:
|
||||||
image: postgres:16
|
image: postgres:16
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: password
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -123,7 +123,7 @@ services:
|
|||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: postgres://postgres:password@db:5432/myapp_development
|
DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}@db:5432/myapp_development
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
postgres_data:
|
postgres_data:
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ $ docker compose logs -f
|
|||||||
```bash
|
```bash
|
||||||
## 导出 SQL
|
## 导出 SQL
|
||||||
|
|
||||||
$ docker exec wordpress_db mysqldump -u wordpress -pwordpress wordpress > backup.sql
|
$ docker compose exec -T db sh -c 'tmp=$(mktemp) && printf "[client]\nuser=wordpress\npassword=%s\n" "$(cat /run/secrets/db_password)" > "$tmp" && mysqldump --defaults-extra-file="$tmp" wordpress; rc=$?; rm -f "$tmp"; exit "$rc"' > backup.sql
|
||||||
```
|
```
|
||||||
或者添加一个自动备份容器:
|
或者添加一个自动备份容器:
|
||||||
|
|
||||||
@@ -171,8 +171,11 @@ $ docker exec wordpress_db mysqldump -u wordpress -pwordpress wordpress > backup
|
|||||||
- DB_HOST=db
|
- DB_HOST=db
|
||||||
- DB_NAME=wordpress
|
- DB_NAME=wordpress
|
||||||
- DB_USER=wordpress
|
- DB_USER=wordpress
|
||||||
- DB_PASS=${DB_PASSWORD}
|
# 选用支持从文件读取密码的备份镜像,或用自定义 entrypoint 从 secret 文件注入。
|
||||||
|
- DB_PASS_FILE=/run/secrets/db_password
|
||||||
- DB_DUMP_FREQ=1440 # 每天备份一次
|
- DB_DUMP_FREQ=1440 # 每天备份一次
|
||||||
|
secrets:
|
||||||
|
- db_password
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ $ docker run --name some-app -d --network my-mysql-net application-that-uses-mys
|
|||||||
$ docker run -it --rm \
|
$ docker run -it --rm \
|
||||||
--network my-mysql-net \
|
--network my-mysql-net \
|
||||||
mysql \
|
mysql \
|
||||||
sh -c 'exec mysql -hsome-mysql -P3306 -uroot -pmysecretpassword'
|
sh -c 'exec mysql -hsome-mysql -P3306 -uroot -p'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Dockerfile
|
### Dockerfile
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
mdpress-build:
|
mdpress-build:
|
||||||
|
|||||||
Reference in New Issue
Block a user