我已将我的项目配置为docker。我有在非docker期间使用的数据库,现在我想将docker-compose db服务连接到它。但是当我写docker-compose up
- 现有数据库未使用时 - 创建了新数据库(我怀疑,docker容器根本看不到数据库)。如果我胡说八道,请告诉我。也许我应该将我的服务器数据库迁移到容器中。
这是我的docker-compose.yml:
services:
db:
restart: always
image: postgres:latest
environment:
- POSTGRES_DB=mydb
- POSTGRES_PASSWORD=p@ssw0rd
- POSTGRES_USER=root
ports:
- "5432:5432"
volumes:
# We'll mount the 'postgres-data' volume into the location Postgres stores it's data:
- postgres-data:/var/lib/postgresql/data
web:
build: .
command: bash -c "python manage.py collectstatic --noinput && ./manage.py migrate && ./run_gunicorn.sh"
volumes:
- .:/code
- /static:/static
ports:
- 443:443
depends_on:
- db
nginx:
restart: always
image: nginx:latest
ports:
- 80:80
volumes:
- ./misc/nginx.conf:/etc/nginx/conf.d/default.conf
- /static:/static
depends_on:
- web
答案 0 :(得分:0)
我认为,canonic方法是让数据库引擎在容器中运行,同时将数据存储在持久存储上(将卷映射到硬盘)。 所以我会像你建议的那样在Docker中使用Postgres作为ServerDB。
答案 1 :(得分:0)
如果您只希望应用程序连接到外部数据库,请将其声明为外部主机:
version: '2'
services:
web:
build: .
command: bash -c "python manage.py collectstatic --noinput && ./manage.py migrate && ./run_gunicorn.sh"
volumes:
- .:/code
- /static:/static
ports:
- 443:443
extra_hosts:
- "db:192.168.1.2"
nginx:
restart: always
image: nginx:latest
ports:
- 80:80
volumes:
- ./misc/nginx.conf:/etc/nginx/conf.d/default.conf
- /static:/static
depends_on:
- web
请确保您的应用程序将数据库作为数据库引用并替换我放在主机IP中的ip。
问候