2015-03-09 5 views
0

Я создал контейнер докеров для postgres, используя следующую ссылку. Есть несколько существующих сценариев postgres, которые мне нужно запустить в контейнере.Docker - Running Postgres Скрипты внутри контейнера

Docker Изображение ссылка- https://registry.hub.docker.com/_/postgres/

Пробовал с помощью следующей команды еще не повезло

ADD runsqlscripts.sh /root/runsqlscripts.sh 
    CMD ["postgres" "/root/runsqlscripts.sh" ] 
+1

Что означает «все еще не везение»? Вам необходимо опубликовать полный файл Dockerfile, runningqlscripts.sh, что вы ожидаете, и что на самом деле происходит, включая любые сообщения об ошибках. –

ответ

0
WORKDIR /workspace 
CMD ["postgres", "/root/runsqlscripts.sh" ] 

docker run -v /root:/workspace IMAGE_ID 

Если вы хотите отобразить каталог узла в контейнере в заданном пути, вам нужно вызовите -v /host:/container в создании вашего контейнера. Dockerfile может каталогизировать каталог, но на случайный путь, например /dev/disk/by-uuid/af414ad8-9936-46cd-b074-528854656fcd.

+0

Я использую официальное Postgres Изображение по следующей ссылке: https://registry.hub.docker.com/_/postgres/ Следующая команда используется для сборки Continaer. Я хочу сопоставить свою папку скриптов моего хоста докеров с папкой script_new контейнера докеров и запустить sql-скрипты в моем контейнере. докер пробег --name некоторые-Postgres -e POSTGRES_PASSWORD = mysecretpassword -d Postgres Docker бег -это --link postgress_container: Postgres --rm postgress_img2 ш -c «Exec PSQL -h "$ POSTGRES_PORT_5432_TCP_ADDR" -p«$ POSTGRES_PORT_5432_TCP_PORT "-U postgres ' – user1581721

+1

Ваша грамматика неправильная. Должно быть запятая между «postgres» и «/root/runsqlscripts.sh». –

+0

Я могу создать контейнер из вышеуказанных команд, и postgresql работает нормально. Я просто хочу сопоставить папки моей файловой системы с файловой системой докеров и запустить sql-скрипты в контейнере. – user1581721

1

См. Предыдущий ответ на мой вопрос для лучшего способа сделать это.

"correct" way to manage database schemas in docker

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

Они рекомендуют запускать скрипты из docker-entrypoint.sh сценария, который будет выглядеть в каталоге ./docker-entrypoint-initdb.d для сценариев, которые должны быть запущены после начал Postgres.