docker-compose postgres 自定义数据库详细信息
docker-compose postgres customize database details
我正在尝试使用 docker 和 docker-compose docker 化我现有的 Django 应用程序。 Insead 使用默认 postgres 数据库,我想创建一个具有新名称、用户 ID 和密码的数据库。
这是我正在使用的配置。当我附加到 db 容器时,我仍然只看到默认帐户、用户和密码。
$ cat .env
# Add Environment Variables
DB_NAME=postgres_2
DB_USER=postgres_2
DB_PASS=postgres_2
DB_SERVICE=postgres_2
DB_PORT=5432
$ cat docker-compose.yml
web:
restart: always
build: ./web
expose:
- "8000"
links:
- db:db
- redis:redis
volumes:
- /usr/src/app/static
command: /usr/local/bin/gunicorn django_project.wsgi:application -w 2 -b :8000
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
db:
restart: always
image: postgres:latest
volumes_from:
- data
#env_file: .env
env_file: .env
ports:
- "5432:5432"
redis:
restart: always
image: redis:latest
ports:
- "6379:6379"
data:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
command: "true"
docker-compose build; docker-compose up -d; docker ps;
之后
当我连接到数据库容器时..
$:/home/django# docker exec -it 41de5b474b88 /bin/bash
root@41de5b474b88:/# su - postgres
No directory, logging in with HOME=/
$ psql postgres_1
psql: FATAL: database "postgres_1" does not exist
$ psql postgres
psql (9.4.4)
Type "help" for help.
postgres=#
我可以从 env 文件配置新数据库的详细信息,还是应该使用此存储库中所示的 post 安装脚本的方法?
仅添加环境文件不会创建数据库,一旦容器 运行ning.
,您必须 运行 bootstrap 脚本
尽管 docker-compose 提供了 command 指令,但最好的方法是从基本的 postgresql 映像创建您自己的映像,并将其用作您的 componse 配置中的目标(或者,使用 docker 文件配置图像)。
在您链接的存储库中,密码的设置由 modify_postgress_pass.sh
script 完成,您可以使用类似的方法。
上述问题的可能解决方案已得到回答- 。
在 docker 处从 sql 文件创建用户 - 组合将是在不同 OS 中构建 docker 的良好解决方案(尤其是 windows).
我正在尝试使用 docker 和 docker-compose docker 化我现有的 Django 应用程序。 Insead 使用默认 postgres 数据库,我想创建一个具有新名称、用户 ID 和密码的数据库。
这是我正在使用的配置。当我附加到 db 容器时,我仍然只看到默认帐户、用户和密码。
$ cat .env
# Add Environment Variables
DB_NAME=postgres_2
DB_USER=postgres_2
DB_PASS=postgres_2
DB_SERVICE=postgres_2
DB_PORT=5432
$ cat docker-compose.yml
web:
restart: always
build: ./web
expose:
- "8000"
links:
- db:db
- redis:redis
volumes:
- /usr/src/app/static
command: /usr/local/bin/gunicorn django_project.wsgi:application -w 2 -b :8000
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
db:
restart: always
image: postgres:latest
volumes_from:
- data
#env_file: .env
env_file: .env
ports:
- "5432:5432"
redis:
restart: always
image: redis:latest
ports:
- "6379:6379"
data:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
command: "true"
docker-compose build; docker-compose up -d; docker ps;
当我连接到数据库容器时..
$:/home/django# docker exec -it 41de5b474b88 /bin/bash
root@41de5b474b88:/# su - postgres
No directory, logging in with HOME=/
$ psql postgres_1
psql: FATAL: database "postgres_1" does not exist
$ psql postgres
psql (9.4.4)
Type "help" for help.
postgres=#
我可以从 env 文件配置新数据库的详细信息,还是应该使用此存储库中所示的 post 安装脚本的方法?
仅添加环境文件不会创建数据库,一旦容器 运行ning.
,您必须 运行 bootstrap 脚本尽管 docker-compose 提供了 command 指令,但最好的方法是从基本的 postgresql 映像创建您自己的映像,并将其用作您的 componse 配置中的目标(或者,使用 docker 文件配置图像)。
在您链接的存储库中,密码的设置由 modify_postgress_pass.sh
script 完成,您可以使用类似的方法。
上述问题的可能解决方案已得到回答-
在 docker 处从 sql 文件创建用户 - 组合将是在不同 OS 中构建 docker 的良好解决方案(尤其是 windows).