如何使用 Docker Compose 启动主机应用程序

cod*_*bie 3 docker docker-compose minikube podman

运行 Docker Compose 项目时,如果能够在主机操作系统(正在docker-compose up调用的操作系统上)上打开具有某些参数的应用程序,那就太好了。这在运行网络应用程序时非常有用。例如,当我运行 时,我希望 Docker Compose 自动在主机上打开浏览器(位置为 http://localhost:8080)docker-compose run,而不是手动打开浏览器并输入 http://localhost:8080。就像我们在 Minikube 中看到的那样(例如运行时minikube service web-deployment)。
我知道 docker-compose.yml 中可以使用一些参数来传递要在容器中运行的命令,例如commandentrypoint,但我不知道这对于主机操作系统上的应用程序是否可行。

Dav*_*aze 6

Compose 可以做的事情非常有限。它可以构建 Docker 镜像,没有任何顺序限制,并且可以启动(可能是长时间运行的)Docker 容器,但顺序限制非常有限。它可以创建一些关联的 Docker 对象,例如网络和命名卷。不过,这实际上就是它能做的全部事情;它无法执行更大规模的编排任务(“运行此迁移容器完成,然后运行此应用程序”)或启动非 Docker 任务。

您可以使用一些基于主机的工具来管理它。甚至一个 shell 脚本就足够了;可能是这样的

#!/bin/sh

# start the container stack
# (assumes the caller has permission to do this)
docker-compose up -d

# wait for the service to be ready
while ! curl --fail --silent --head http://localhost:8080; do
  sleep 1
done

# open the browser window
open http://localhost:8080
Run Code Online (Sandbox Code Playgroud)