django - docker-compose postgres 自定义数据库详细信息

标签 django postgresql docker docker-compose

我正在尝试使用 docker 和 docker-compose 对我现有的 django 应用程序进行 docker 化。不使用默认的 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 文件配置新数据库的详细信息,还是应该使用此存储库中所示的安装后脚本方法?

https://github.com/tutumcloud/postgresql

最佳答案

仅添加环境文件不会创建数据库,一旦容器运行,您必须运行引导脚本。

尽管 docker-compose 提供了 command指令,执行此操作的最佳方法是从基础 postgresql 镜像创建您自己的镜像,并将其用作您的 componse 配置中的目标(或者,使用 docker 文件配置镜像)。

在您链接的存储库中,密码的设置由 modify_postgress_pass.sh script 完成您可以使用类似的方法。

关于django - docker-compose postgres 自定义数据库详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644175/

相关文章:

sql - 根据 id 列表为多条记录插入相同的值

postgresql - 可以在 Postgres 全文搜索中对部分匹配进行排名吗?

java - 无法在 Windows 10 上通过 gradle 构建 docker 镜像

docker - 无法使用 Docker 在 Laravel 5.4 (PHP7) 中运行 cron

java - 使用 ID 而不是 DATE 列有什么缺点吗?

ruby-on-rails - 构建期间 dockerized rails 应用程序中的私有(private) Github 存储库

python - 如何将自定义元素列表正确传递给类属性?

Django中间件: Isn't a middleware module error

python - 导入时,django-import-export csv header 之前的空行触发异常

django - 未读取请求正文时出现ERR_INCOMPLETE_CHUNKED_ENCODING