【发布时间】:2019-08-25 07:44:45
【问题描述】:
目前正在构建一个包以使用 AWS 测试一些 devOps 配置。使用 Swift Vapor3、PostgreSQL 11、Docker 构建应用程序。鉴于我的github Repo 项目构建/测试/运行与vapor build vapor test vapor run 很好,因为您在本地安装了带有username: test, password: test 的postgresql
但是我的 api 没有连接到我的数据库,我担心我的配置是错误的。
version: "3.5"
services:
api:
container_name: vapor_it_container
build:
context: .
dockerfile: web.Dockerfile
image: api:dev
networks:
- vapor-it
environment:
POSTGRES_PASSWORD: 'test'
POSTGRES_DB: 'test'
POSTGRES_USER: 'test'
POSTGRES_HOST: db
POSTGRES_PORT: 5432
ports:
- 8080:8080
volumes:
- .:/app
working_dir: /app
stdin_open: true
tty: true
entrypoint: bash
restart: always
depends_on:
- db
db:
container_name: postgres_container
image: postgres:11.2-alpine
restart: unless-stopped
networks:
- vapor-it
ports:
- 5432:5432
environment:
POSTGRES_USER: test
POSTGRES_PASSWORD: test
POSTGRES_HOST: db
POSTGRES_PORT: 5432
PGDATA: /var/lib/postgresql/data
volumes:
- database_data:/var/lib/postgresql/data
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: test@test.com
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
- pgadmin:/root/.pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- vapor-it
restart: unless-stopped
networks:
vapor-it:
driver: bridge
volumes:
database_data:
pgadmin:
# driver: local
另外,在阅读 Docker postgres 文档时,我在“注意事项”部分遇到了这个问题。
如果在容器中启动 postgres 时没有数据库,那么 postgres 将为您创建默认数据库。虽然这是 postgres 的预期行为,但这意味着它在此期间不会接受传入的连接。这可能会在使用同时启动多个容器的自动化工具(例如 docker-compose)时导致问题。postgres dockerhub
我没有进行这些更改,因为我不确定如何制作该文件或配置的外观。有没有人做过类似的事情,在连接到 Postgresql 和使用 vapor 作为后端方面有一些经验?
【问题讨论】:
标签: postgresql docker docker-compose vapor