2015-03-06 5 views
2

Я использовал следующие команды и создал контейнер докеров в Ubuntu os для postgresql. В любом случае я могу указать пароль postgres db в команде «Запуск» и выполнить команды sql из сценариев sql внутри контейнера докеров?Docker: - Создание баз данных в контейнере Docker Postgresql

В настоящее время я обращаюсь к контейнеру, используя следующую команду и выполняю SQL-команды вручную.

sudo docker run --rm -t -i --link pg_docker:pg postgresql_image bash 
sql -h $PG_PORT_5432_TCP_ADDR -p $PG_PORT_5432_TCP_PORT -d docker -U docker --password 
     prompts for postgres Password: 




     # example Dockerfile for http://docs.docker.com/examples/postgresql_service/ 
     # 
     FROM ubuntu 
     MAINTAINER vicky 
     RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 
     RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list 
     RUN apt-get update && apt-get install -y python-software-properties software-properties-common postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 
     USER postgres 
     RUN /etc/init.d/postgresql start &&\ 
      psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\ 
      createdb -O docker docker 
     RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf 
     RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf 
     EXPOSE 5432 
     VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] 
     CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"] 


     Commands to Create Docker Image & Container 
     sudo docker build -t postgresql_image . 
     sudo docker run --rm -P --name pg_docker postgresql_image & 
     sudo docker run --rm -t -i --link pg_docker:pg postgresql_image bash 
     sql -h $PG_PORT_5432_TCP_ADDR -p $PG_PORT_5432_TCP_PORT -d docker -U docker --password 
     prompts for postgres Password: 
+0

Просто FYI, многие из команд Postgres примут пароль с помощью переменного окружения 'PGPASSWORD', которые могут быть заданы, чтобы избежать побуждая ... не уверен, что если относится к вам? –

ответ

1

Существует официальный Postgre образ (https://registry.hub.docker.com/_/postgres/) в dockerhub, который обеспечивает

1) указать пароль Postgres БД в команде Run

2) Выполнение команд SQL, используя команду запуска.

Пожалуйста, дайте нам знать, если он удовлетворяет то, что вы искали

+0

Спасибо за ссылку. Теперь я могу указать пароль в команде Run, но мне также нужно вызвать несколько скриптов postgres (psql) внутри докера. необходимо создать несколько таблиц после создания докера. Например: создать таблицу tbl_sample ( id numeric, имя символ (1), ); – user1581721

Смежные вопросы