简要总结:如何更改在测试容器中运行的迷你客户端的默认端口?
我想在我的应用程序中使用minio作为测试容器,当我在本地启动它时,它已经工作了。下面是我用来运行测试容器的代码片段:
public class MinioContainer extends GenericContainer<MinioContainer> {
private static final int DEFAULT_PORT = 9000;
private static final String DEFAULT_IMAGE = "/minio/minio";
private static final String DEFAULT_TAG = "latest";
private static final String MINIO_ACCESS_KEY = "MINIO_ACCESS_KEY";
private static final String MINIO_SECRET_KEY = "MINIO_SECRET_KEY";
private static final String DEFAULT_STORAGE_DIRECTORY = "/data";
private static final String HEALTH_ENDPOINT = "/minio/health/ready";
public MinioContainer() {
this(DEFAULT_IMAGE + ":" + DEFAULT_TAG);
}
public MinioContainer(String image) {
super(image == null ? DEFAULT_IMAGE + ":" + DEFAULT_TAG : image);
Network network = Network.newNetwork();
withNetwork(network);
withNetworkAliases("minio-" + Base58.randomString(6));
addExposedPort(DEFAULT_PORT);
withEnv(MINIO_ACCESS_KEY, "access_key");
withEnv(MINIO_SECRET_KEY, "secret_key");
withCommand("server", DEFAULT_STORAGE_DIRECTORY);
setWaitStrategy(new HttpWaitStrategy()
.forPort(DEFAULT_PORT)
.forPath(HEALTH_ENDPOINT)
.withStartupTimeout(Duration.ofMinutes(1)));
}
public String getHostAddress() {
return getHost() + ":" + getMappedPort(DEFAULT_PORT);
}
}
当我在集群上部署这个程序时,在集群的端口9000上也运行了一个minio容器,它在控制台中显示了这个错误消息:
io.minio.errors.ErrorResponseException: The Access Key Id you provided does not exist in our records.
at some.package.MinioTest.setup(MinioTest.java:58)
在我的测试中,我使用这个容器运行了一个SpringBootTest,并注入了我的minio客户端。我还配置了一个测试应用程序yaml,这样我就可以使用一个活动的测试配置文件运行我的测试。错误发生在以下代码片段中:
private final String BUCKET = "bucket";
....
@BeforeEach
void setup() {
boolean bucketExists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(BUCKET).build());
...
}
是否有办法更改我的MinioContainer上的DEFAULT_PORT,使其与已在群集上运行的Minio Container的端口不同?由于此问题,我无法在我们的管道上运行测试,此问题仅发生在我们的群集上。
只要我将MinioContainer上的DEFAULT_PORT更改为不同于9000的值,容器就会停止工作,因为它无法找到HEALTH_ENDPOINT,因此整个容器都会停止工作。
我希望我把我的问题解释得足够清楚。如果没有,请告诉我,这样我就可以试着解释得更清楚。我已经对这个问题完全失望了。
BR空
1条答案
按热度按时间omqzjyyz1#
我找到了问题的解决方案。Minio支持以下命令:
"server /data --address :9100"
现在我可以像这样生成我的测试容器了:
现在,我的测试中的MinioContainer使用端口9100运行。
希望我能帮助其他人解决这个问题。