启动 Docker 容器并在主机上打开 Web 浏览器

启动 Docker 容器并在主机上打开 Web 浏览器

我最近遇到了一个(对我来说)不平凡的案例。也许你知道有什么办法可以解决它。

我有一个 shell 脚本,它运行 Docker 命令来启动 Ubuntu 容器,最终运行来宾 Bash,启动一些系统服务,包括 Web 服务器。来宾 Bash 初始化后,我想在主机上打开 Web 浏览器。目前看起来是这样的:

docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
python -m webbrowser http://localhost:$PORT

但这显然效果不佳,因为脚本会等到docker退出才开始python。交换它们不会起作用,因为网站将在来宾 Bash(和 Web 服务器)启动之前加载。同时我需要使用 来运行 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

我这样做是为了用于握持的 docker 包装器查看主机中容器提供的自述文件,它对我来说工作得很好。这取决于您的容器需要启动多长时间。

答案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

卷曲尝试每秒连接三十秒,然后放弃。发生这种情况时,浏览器根本不会启动。如果您希望浏览器无条件启动,请将 替换&&;.

相关内容