Shu*_*pli 5 postgresql docker docker-compose
基于Docker的Postgres 文档,我可以在其中创建任何*.sql文件/docker-entrypoint-initdb.d并使其自动运行。
我有init.sql包含CREATE DATABASE ronda;
在我的docker-compose.yaml,我有
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
volumes:
- /usr/src/app/static
env_file: .env
command: /usr/local/bin/gunicorn ronda.wsgi:application -w 2 -b :8000
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
postgres:
restart: always
build: ./postgres/
volumes_from:
- data
ports:
- "5432:5432"
data:
restart: always
build: ./postgres/
volumes:
- /var/lib/postgresql
command: "true"
Run Code Online (Sandbox Code Playgroud)
还有我的postgres Dockerfile,
FROM library/postgres
RUN mkdir -p /docker-entrypoint-initdb.d
COPY init.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
运行docker-compose build和docker-compose up做工精细,但数据库ronda未创建。
如果您的初始化要求只是创建ronda架构,那么您可以使用文档POSTGRES_DB中描述的环境变量。
postgres 服务的docker-compose.yml文件部分将是:
postgres:
restart: always
build: ./postgres/
volumes_from:
- data
ports:
- "5432:5432"
environment:
POSTGRES_DB: ronda
Run Code Online (Sandbox Code Playgroud)
顺便说一句,不要用于restart: always您的data容器,因为该容器不运行任何服务(仅运行true命令)。true这样做基本上就是告诉 Docker在无限循环中运行该命令。
| 归档时间: |
|
| 查看次数: |
4540 次 |
| 最近记录: |