我有一些C#集成测试,这些测试启动MySql Docker容器,构建架构,与它交互,然后拆除容器。当我运行dotnet test
时,它工作正常,但当我尝试将它作为docker build
命令的一部分运行时,Cannot assign requested address /var/run/docker.sock
失败。
测试容器设置:
var testcontainerBuilder = new TestcontainersBuilder<MySqlTestcontainer>()
.WithDatabase(new MySqlTestcontainerConfiguration()
{
Database = MYSQL_DBNAME,
Username = MYSQL_USER,
Password = password,
Port = MYSQL_PORT
})
.WithEnvironment("MYSQL_ROOT_HOST", "%")
.WithOutputConsumer(_outputConsumer)
.WithCleanUp(true);
_container = testcontainerBuilder.Build();
await _container.StartAsync();
我已检查的内容:
- 端口可用
_container.ConnectionString
是localhost
,我怀疑这是有关联的。
我怀疑Docker构建环境在localhost
处看不到MySql容器。
1条答案
按热度按时间hmae6n7t1#
我提出的解决方案是将
docker build
分成两个步骤,一个用于测试,一个用于打包构建,然后在/var/run/docker.sock
上运行带有文件挂载的构建测试容器Dockerfile.test:
命令:
灵感来自这篇文章:What is the result of mounting
/var/run/docker.sock
in a Docker in Docker scenario?