Ввод текста в Docker-контейнер через SSH из Bash-файла - PullRequest
0 голосов
/ 30 июня 2019

То, что я пытаюсь сделать, - это настроить локальную базу данных разработки и не позволить всем проходить все шаги, которые, я думал, было бы полезно создать сценарий.

То, что у меня ниже стопа, когда оно находится в терминале, выглядит так:

выход

./dbSetup.sh 
hash of container 0d1b182aa6f1
/ #

В этот момент я должен вручную ввести exit.

сценарий

#!/bin/bash
command=$(docker ps | grep personal)
set $command
echo "hash of container ${1}"
docker exec -it ${1} sh

Есть ли способ ввести команду с помощью скрипта в контейнерный терминал докеров?

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Ваш скрипт находит работающий Docker-контейнер и открывает для него оболочку.«-It» делает его интерактивным и выделяет tty, поэтому он продолжает ждать ввода, например «выход».Если планируется выполнить некоторые команды для инициализации локальной базы данных разработки, я бы порекомендовал вместо этого создать образ с помощью файла Dockerfile.т.е. после того, как вы выясните, какие команды должны выполняться, они станут командами RUN, а контейнер после запуска докера откроет локальную базу данных разработки.

Если вы действительно хотите, чтобы некоторые команды выполнялись в оболочке после ее запуска иПоддерживая сеанс, в зависимости от базового образа вы можете смонтировать профиль bash, который содержит необходимые команды, например -v db_profile: /etc/profile.d, где db_profile - это папка со сценариями оболочки, которые вы хотите запустить.Чтобы заставить их работать, вы должны запустить exec sh -l, чтобы запустить сценарии входа в систему.

0 голосов
/ 30 июня 2019

Чтобы выполнить команду внутри контейнера, вы можете использовать что-то вроде этого:

docker exec -ti my_container sh -c "echo a && echo b"

Более подробная информация доступна по адресу: https://docs.docker.com/engine/reference/commandline/exec/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...