GitHub Actions 上 Windows 环境中的测试容器:“找不到有效的 Docker 环境。请查看日志并检查配置”
Posted
技术标签:
【中文标题】GitHub Actions 上 Windows 环境中的测试容器:“找不到有效的 Docker 环境。请查看日志并检查配置”【英文标题】:Testcontainers in Windows environment on GitHub Actions: "Could not find a valid Docker environment. Please see logs and check configuration" 【发布时间】:2021-05-10 15:46:56 【问题描述】:我们在spring-boot-admin 项目中大量使用testcontainers-java。由于我们还希望能够在 Windows 上运行我们的 Maven 构建,我们使用矩阵策略构建 (as supposed in this answer) 向我们的 GitHub Actions Pipeline 添加了一个windows-latest
环境,如下所示:
name: build
on:
push:
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: $ matrix.os
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: |
mvn -B install --no-transfer-progress
现在我们的 Testcontainers JUnit 测试用例失败了(参见full build log):
[INFO] Running de.codecentric.boot.admin.server.eventstore.HazelcastEventStoreWithClientConfigTest
Error: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.877 s <<< FAILURE! - in de.codecentric.boot.admin.server.eventstore.HazelcastEventStoreWithClientConfigTest
Error: de.codecentric.boot.admin.server.eventstore.HazelcastEventStoreWithClientConfigTest Time elapsed: 0.877 s <<< ERROR!
java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration
那么知道我们可以做些什么来解决这个问题吗?
【问题讨论】:
【参考方案1】:问题在于,在 Windows Server 中,默认情况下只有 Windows 容器被激活(没有 Linux 容器)。 As Sergei Egorov stated:
windows-latest 的问题在于它使用的是 Windows 容器,而不是 Linux 容器。这意味着 Testcontainers 本身可以工作,但它启动的所有映像都是基于 Linux 的,并且在 Windows 容器模式下,它们显然无法启动:)
对此的“修复”是拥有一个启用 Linux 容器的 GitHub Action 环境!但是经过一些谷歌搜索之后,这似乎并不那么容易。首先,我认为只需要启用 LCOW(Windows 上的 Linux 容器)。但正如this great elaboration 所说,在 GitHub Actions Windows 环境中激活 LCOW 并不容易(甚至不可能)。
我深入研究了这个问题,发现 that LCOW was officially deprecated in 20.10
? 支持 WSL2,它带来了原生 Linux 运行时和 Docker for Desktop on Windows 10 already favours this approach。
但是:我们使用的是 Windows Server 2019,它不是 Windows 10 桌面版。在 GitHub Actions 上,我们只有 nano 风格的服务器版本。可悲的是an open issue for the WSL2 support in Windows Server 2019。然后扫描 GitHub Actions Windows Server 2019 docs 我发现现在只安装了 WSLv1。
【讨论】:
以上是关于GitHub Actions 上 Windows 环境中的测试容器:“找不到有效的 Docker 环境。请查看日志并检查配置”的主要内容,如果未能解决你的问题,请参考以下文章
GitHub Actions 上 Windows 环境中的测试容器:“找不到有效的 Docker 环境。请查看日志并检查配置”
使用 Github Actions 为 Windows 编译 QT 应用程序时出错
GitHub Actions:在 Windows 环境中缓存 Maven .m2 存储库 C\:\\Users\runneradmin\\.m2\repository:无法统计:没有这样的文件或目录