2017-01-05 1 views
1

У меня есть контейнер докеры узлов, на котором я запускаю dev-сервер.Возможно ли получить доступ к команде ввода bash на рабочем контейнере докера?

В моем файле докер-compose.yml, команда запись:

... 
command: start-dev-server 
... 

Где начать-DEV-сервер указывает на скрипт, который запускает сервер после того, как поставщика установки:

// /usr/local/bin/start-dev-server 
#!/usr/bin/env bash 

# install node modules if missing 
npm i 
# start the dev server 
npm run start 

Итак, когда я запускаю свой контейнер, сервер также запустится.

Я знаю, что я могу получить доступ к емкости в Баш через следующую команду:

docker exec -it my-container bash 

Но я не могу остановить или перезагрузить сервер. Есть ли способ получить доступ к ssh с помощью команды? (например, для просмотра журналов сервера или остановки & перезапустите его).

Возможно, я беру это по неправильному пути, потому что команда ввода не должна останавливаться? Итак, в этом случае, есть ли у кого-нибудь решение, которое могло бы позволить мне запустить мой сервер &, управлять им более гибким способом?

+0

Лучшие практики говорят, что вы должны увидеть контейнер в качестве своего сервера. Если вы хотите остановить его, остановите контейнер, если вы хотите его перезапустить, перезапустите контейнер. Ваш сервер должен войти в 'stdout', чтобы вы могли видеть журналы, используя' docker logs my-container'. Итак, вы правы, команда не должна останавливаться, так как она остановит контейнер. Чтобы предложить решение, что вы имеете в виду, когда говорите «управляйте им более гибким способом»? – charli

+0

На самом деле протоколы докеры команд -f my-container полностью то, что я хотел и действительно, чтобы остановить и перезапустить сервер, мне просто нужно использовать команды докеров. Я просто пропустил параметр -f для команды logs, которая позволяет мне видеть журналы в прямом эфире! Спасибо, сэр, вы можете ответить своим комментарием, и я приму ваш ответ! – jiboulex

+0

Спасибо! Я добавил команды докеров и ссылку на лучшие практики Docker – charli

ответ

2

best practices говорит, что вы должны видеть контейнер в качестве своего сервера. Если вы хотите остановить его, остановите контейнер (docker stop my-container), если вы хотите его перезапустить, перезапустите контейнер (docker restart my-container). Ваш сервер должен зарегистрироваться до stdout, чтобы вы могли видеть журналы, используя docker logs -f my-container. Итак, вы правы, команда не должна останавливаться, так как она остановит контейнер.