2017-01-05 3 views
1

나는 dev 서버를 실행하고있는 노드 도커 컨테이너를 가지고있다. 내 고정 표시기-compose.yml 파일에서실행중인 도커 컨테이너에서 entry 명령 bash에 액세스 할 수 있습니까?

, 엔트리 명령은 다음과 같습니다

... 
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 

을하지만 거기에 내가 중지하거나 내 서버를 다시 시작할 수 없습니다 :

나는 나는 다음과 같은 명령을 통해 bash는 내 컨테이너에 액세스 할 수 있는지 알고있다. 시작된 명령으로 ssh에 액세스 할 수 있습니까? (예를 들어 서버 로그를 보거나 서버를 다시 시작하지 않으려면 &을 다시 시작하십시오).

아마도 입력 명령이 중지되지 않아서 잘못된 경로로 여기에 걸릴 수 있습니까? 따라서이 경우 누가 내 서버를 시작할 수있는 솔루션을 가지고 있습니까? & 더 유연한 방식으로 제어 할 수 있습니까?

+0

최상의 방법은 컨테이너를 서버로보아야한다고 말합니다. 중지하려면 컨테이너를 중지하고 다시 시작하려면 컨테이너를 다시 시작하십시오. 서버는'stdout'에 로그해야하므로'docker logs my-container'를 사용하여 로그를 볼 수 있습니다. 그래서, 당신 말이 맞아요, 그 명령은 컨테이너를 멈출 것이기 때문에 멈추지 않아야합니다. 해결책을 제안하려면 "더 유연한 방식으로 제어"라고 할 때 무엇을 의미합니까? – charli

+0

실제로 docker logs -f my-container 명령은 내가 원했던대로 실제로 서버를 중지했다가 다시 시작하기 위해 docker 명령을 사용해야합니다. 방금 로그를 볼 수있는 logs 명령의 -f 옵션을 놓쳤습니다. 고마워요. 선생님의 의견에 대답 해 주시면 답변을 수락하겠습니다! – jiboulex

+0

감사! docker 명령과 Docker 모범 사례에 대한 링크를 추가했습니다. – charli

답변

2

best practices에는 컨테이너가 서버로 표시되어야한다고 나와 있습니다. 중지하려면 컨테이너 (docker stop my-container)를 중지하고 다시 시작하려면 컨테이너 (docker restart my-container)를 다시 시작하십시오. 서버는 stdout에 로그해야하므로 docker logs -f my-container을 사용하여 로그를 볼 수 있습니다. 그래서, 당신 말이 맞아요, 그 명령은 컨테이너를 멈출 것이기 때문에 멈추지 않아야합니다.

관련 문제