Схема сборки Docker в неверной базе данных - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь, чтобы docker создал схему в postgres под базой данных my_database.Я использую файл sql и docker initdb.Проблема в том, что docker создает таблицы в базе данных, называемые postgres.Мне было интересно, как я смогу заставить докер создавать таблицы в другой базе данных.

Я уже пытался добавить \ c my_database.В случае, если он читал это построчно при входе в postgres.Я также подумал о написании сценария, но чувствую, что есть более простое решение.

Любая помощь будет принята с благодарностью.

Docker.yml

version: '3'
services:

  webapp:
    build: ./literate-app
    command: nodemon -e vue,js,css start.js
    ports:
      - "3000:3000"
    networks:
        - literate-net

  server:
    build: ./readability-server
    command: nodemon -L --inspect=0.0.0.0:5555 server.js
    networks:
      - literate-net

  redis_db:
    image: redis:alpine
    networks:
      - literate-net

  postgresql:
    image: 'bitnami/postgresql:latest'
    volumes:
      - ./schema.sql:/docker-entrypoint-initdb.d/schema.sql
      - /bitnami
    ports:
      - "5432:5432"
    networks:
      - literate-net
    environment:
      - POSTGRESQL_USERNAME=my_user
      - POSTGRESQL_PASSWORD=password123
      - POSTGRESQL_DATABASE=my_database

networks:
  literate-net:
    driver: bridge

Я изменил ситуацию и использовал run, однако на этот раз он не создавал таблиц.

1 Ответ

0 голосов
/ 05 марта 2019

Использование официального образа Postgres Docker

Если вы используете официальное изображение Docker Postgres , вы можете управлять именем базы данных с помощью переменной среды POSTGRES_DB:

docker run -d -e POSTGRES_DB=my_database -p 5432:5432 postgres

Или из файла docker-compose.yml:

version: '3'
services:
  db:
    image: postgres
    ports:
      - 5432:5432
    environment:
      - POSTGRES_DB=my_database

Существует еще несколько переменных среды, которые можно использовать с этим образом, как описано в документации :

  • POSTGRES_PASSWORD
  • POSTGRES_USER
  • POSTGRES_DB
  • POSTGRES_INITDB_ARGS
  • POSTGRES_INITDB_WALDIR
  • PGDATA

Использование образа Docker Bitnami Postgres

При использовании образа Docker bitnami / postgresql документация сообщает намиспользуйте переменную окружения POSTGRESQL_DATABASE:

docker run -d -e POSTGRESQL_DATABASE=my_database -p 5432:5432 bitnami/postgresql

Или из файла docker-compose.yml:

version: '3'
services:
  db:
    image: bitnami/postgresql
    ports:
      - 5432:5432
    environment:
      - POSTGRESQL_DATABASE=my_database

Проверьте доступные базы данных:

psql --host=localhost --port=5432 --username=postgres --command='\list'
                                  List of databases
    Name     |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-------------+----------+----------+------------+------------+-----------------------
 my_database | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 postgres    | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0   | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
             |          |          |            |            | postgres=CTc/postgres
 template1   | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
             |          |          |            |            | postgres=CTc/postgres
(4 rows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...