tir*_*hen 8 windows windows-service teamcity build-server docker
我需要在基于 Windows 的构建服务器上运行 docker(我通常使用 Arch/Debian Linux),但我找不到让 docker VM 在系统启动时自动启动的方法。在 Linux 上这将是一项服务,但在 Windows 上似乎并非如此。
我按照https://docs.docker.com/engine/installation/windows/上的说明操作,当我使用 $ docker-machine create 启动 docker VM 时,一切都会运行,但如何将其作为 Windows 服务或类似服务?
目标是能够使用构建 Docker 镜像,作为容器启动并针对它们运行 e2e 测试。由于我们正在使用 TeamCity 来构建有关使用 TeamCity 解决此问题的任何想法,我猜也可以。
前段时间我写了一个小的 webapp,它有一个系统依赖,它只适用于 unix 系统,所以 docker 是自然的选择(尽管我在 vagrant 上取得了一些成功..)
我正在使用 windows 进行开发,并在其 docker 容器中运行此 webapp。
所以我遇到了同样的问题,“如何在系统启动时启动它”?
我最终在我的自动启动目录中生成了一个小批处理文件,其中包含类似以下几行的内容:
docker-machine start default
docker run -d -p 8080:8080 -v //c/Users/%USERNAME%/somepath:/c/Users/%USERNAME%/somepath my/image --some.webapp.param=some-webapp-param-value
Run Code Online (Sandbox Code Playgroud)
第一次调用启动“默认”虚拟机,尽管您应该能够在那里指定不同的虚拟机。第二个调用运行“my/image”docker 容器,将端口 8080 暴露给主机系统并从我的用户主目录安装“somepath”。确保在“后台”运行容器时指定“-d”参数(检查“docker run --help”)
之后,我的 webapp 可以通过“默认 VM”的 ip 地址访问(在我的例子中是 192.168.99.100,这可能在你的系统上有所不同,你可以在第一次启动这个“docker quickstart terminal”时检查输出作为ip 地址将被记录到控制台。)
这样我就可以像往常一样使用我的浏览器,将它指向“ http://192.168.99.100:8080 ”并且可以使用我的网络应用程序。
希望有帮助=)
编辑
现在有了上述批处理文件,有 3 个选项:
将批处理文件放在您的自动启动目录中(需要交互式用户会话,因此可能不适合服务器实例..)
通过 Windows 的任务调度程序调度批处理文件的执行。在那里您可以将“在计算机启动时运行”设置为任务的触发器。无论交互式会话(登录用户..)是否可用,任务都会运行
使用像NSSM这样的服务包装器将批处理文件安装为 Windows 服务
小智 5
只是一个小插件:当您启动 docker 镜像并希望它们在 docker 启动时启动(在这种情况下是运行 docker 的虚拟机),您可以在 docker run 命令中使用 --restart always 选项。然后您可以从批处理文件中删除 docker run 命令。虚拟机启动后,容器应自动启动。
| 归档时间: |
|
| 查看次数: |
12982 次 |
| 最近记录: |