在基于docker-compose的系统中,有没有人能更好地设置具有已知配置的Postgres服务器?
#1 楼
首先,请尽可能使用高山图像。其次,请使用ENV变量来准备数据库配置。更多信息。
第三,使用
/docker-entrypoint-initdb.d
目录扩展图像。更多信息。具有开发环境的示例堆栈。
version: '3.2'
services:
example:
image: "${EXAMPLE_SERVICE}:${EXAMPLE_SERVICE__VERSION}-development"
build:
context: .
dockerfile: Dockerfile.development
networks:
- net
ports:
- 5000:5000
depends_on:
- example__migrator
stdin_open: true
tty: true
environment:
POSTGRES_PASSWORD: example
POSTGRES_DB: example
POSTGRES_USER: example
POSTGRES_HOST: pg.example_net
POSTGRES_PORT: 5432
FLASK_APP: app.py
FLASK_DEBUG: 1
volumes:
- .:/home/example
example__migrator:
image: "${EXAMPLE_SERVICE}:${EXAMPLE_SERVICE__VERSION}-development"
build:
context: .
command: sh -c './wait-for pg.example_net:5432 -- python manage.py db upgrade'
networks:
- net
depends_on:
- pg
environment:
POSTGRES_PASSWORD: example
POSTGRES_DB: example
POSTGRES_USER: example
POSTGRES_HOST: pg.example_net
POSTGRES_PORT: 5432
pg:
image: postgres:10.0-alpine
networks:
- net
ports:
- 5432:5432
volumes:
- pg_data:/var/lib/postgresql/data/pg_data
environment:
POSTGRES_PASSWORD: example
POSTGRES_DB: example
POSTGRES_USER: example
POSTGRES_HOST: pg.example_net
POSTGRES_PORT: 5432
PGDATA: /var/lib/postgresql/data/pg_data
networks:
net:
volumes:
pg_data:
评论
为什么要使用Alpine?有什么好处?
–防晒
19年7月29日在3:48
首先,默认情况下为4-5 MB的轻量级。例如,postgres:9.6.14是84 MB,postgres:9.6.14-alpine是15 MB,具有相同的功能。其次,默认情况下,Alpine Linux附带一个强化的内核,并且所有用户空间二进制文件都已预编译了堆栈粉碎保护。
– AfsmNGhr
19年7月29日在17:53