在 Windows 的 Docker 容器中运行测试容器

Posted

技术标签:

【中文标题】在 Windows 的 Docker 容器中运行测试容器【英文标题】:Running testcontainers inside a Docker container for Windows 【发布时间】:2018-09-21 08:55:11 【问题描述】:

正如documentation 中所说,如果我想在 docker 中运行测试容器,我必须考虑以下几点:

    docker 套接字必须通过卷挂载可用 “本地”源代码目录必须安装在容器内的同一路径上,Testcontainers 运行所在的路径,以便 Testcontainers 能够为它产生的容器。

如果我使用Docker for Windows,如何遵守第二点,主要是-v $PWD:$PWD条件?

【问题讨论】:

【参考方案1】:

在 windows 上,docker 使用命名管道,而不是套接字。

docker run -v \\.\pipe\docker_engine:\\.\pipe\docker_engine

但您需要 Windows v1709 和 Docker for Windows 的特殊版本,因为此功能是实验性的。

更多信息: https://blog.docker.com/2017/09/docker-windows-server-1709/

至于 $PWD,在 windows cmd 上你可以使用 %CD% 变量来完成同样的工作。 Powershell 也有一个$pwd,和 linux 一样。但不幸的是,它们不适用于 docker-compose,因为它们不是真正的环境变量。

我认为最简单的方法是在 Windows 上执行一个简短的脚本来创建 .env 文件,其中 PWD= 将设置为当前目录:

 echo PWD=%cd% > .env

你可以在 docker-compose 中使用 $PWD,就像在 linux 上一样。

【讨论】:

但这是针对 Windows 容器的,而 Testcontainers 是针对 Linux 容器的。

以上是关于在 Windows 的 Docker 容器中运行测试容器的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 容器中运行 Visual Studio 远程调试器(由 Docker 管理)

我可以在 Windows 7 上使用 docker-toolbox 运行 Windows 容器吗?

Docker: Windows容器能运行在Linux上吗

Windows下Docker主机网络容器服务访问

解决Windows10下无法对docker容器进行端口访问(端口映射的问题)

windows下docker安装nginx