나는 최근에 특이한 (나에게) 사례를 접했습니다. 어쩌면 당신은 그것을 고치는 방법을 알고 있을 수도 있습니다.
Docker 명령을 실행하여 Ubuntu 컨테이너를 시작하는 쉘 스크립트가 있습니다. 이 컨테이너는 궁극적으로 게스트 Bash를 실행하고 웹 서버를 포함한 일부 시스템 서비스를 시작합니다. 게스트 Bash가 초기화된 후 호스트 컴퓨터에서 웹 브라우저를 열고 싶습니다. 현재는 다음과 같습니다.
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
python -m webbrowser http://localhost:$PORT
그러나 스크립트는 docker
종료가 시작될 때까지 기다리기 때문에 분명히 제대로 작동하지 않습니다 python
. 게스트 Bash(및 웹 서버)가 시작되기 전에 웹 사이트가 로드되기 때문에 교환은 작동하지 않습니다. 동시에 를 사용하여 Docker를 실행해야 하므로 -it
잘 docker ... & python ...
작동하지 않습니다.
일을 작동시킬 수 있는 방법이 있나요?
답변1
백그라운드에서 초기 지연 후 웹 브라우저를 실행할 수 있습니다.
(sleep 2 && python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
나는 이것을 위해 이것을한다그립용 도커 래퍼호스트의 컨테이너에서 제공하는 추가 정보를 보면 제대로 작동했습니다. 컨테이너를 시작하는 데 필요한 시간에 따라 다릅니다.
답변2
사용되는 버전입니다곱슬컨테이너의 서버가 시작되면 브라우저를 시작합니다.
(curl --silent --retry 30 --retry-delay 1 --retry-connrefused \
http://localhost:$PORT && \
python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
곱슬30초 동안 1초마다 연결을 시도한 다음 포기하세요. 이런 일이 발생하면 브라우저가 전혀 시작되지 않습니다. 브라우저가 무조건 실행되도록 하려면 를 &&
바꾸십시오 ;
.