GoLang postgres testcontainer 将 BindMounts 转换为 Mounts

GoLang postgres testcontainer convert BindMounts to Mounts

我刚刚将测试容器库从 github.com/testcontainers/testcontainers-go v0.12.0 升级到 github.com/testcontainers/testcontainers-go v0.13.0 以前这是我创建请求的方式

    ContainerRequest: testcontainers.ContainerRequest{
            Image:          mountebankImage,
            Name:           uuid.New().String(),
            ExposedPorts:   []string{mountebankExposedPort},
            BindMounts:     map[string]string{"/mountebank": path.Join(c.rootDir, "/test/stubs/mountebank")},
            Entrypoint:     []string{"mb", "start", "--configfile", "/mountebank/imposters.ejs"},
            Networks:       []string{c.network.Name},
   

在最新版本的测试容器库中,BindMounts(不再支持link)被Mounts取代。 尝试在我的初始化脚本中替换相同的内容,但找不到它。

BindMounts:     map[string]string{"/mountebank": path.Join(c.rootDir, "/test/stubs/mountebank")},

它是请求正文的一部分。尝试使用 testcontainers.ContainerMounts{}

我是不是漏掉了什么?

ContainerRequest object contains a list of ContainerMount 个对象,其中记录

Source is typically either a GenericBindMountSource or a GenericVolumeMountSource

GenericBindMountSource just names a host path. You could also use a DockerBindMountSource 如果您需要高级选项。

所以你应该能够用 Mounts:

替换 BindMounts: 参数
ContainerRequest: testcontainers.ContainerRequest{
        Mounts: testcontainers.Mounts(testcontainers.ContainerMount{
                Source: testcontainers.GenericBindMountSource{
                        HostPath: path.Join(c.rootDir, "/test/stubs/mountebank"),
                },
                Target: testcontainers.ContainerMountTarget("/mountebank"),
        }),
        ...
},