是否可以在 DockerComposeContainer 的 docker-compose 文件中使用本地 Docker 映像?

Posted

技术标签:

【中文标题】是否可以在 DockerComposeContainer 的 docker-compose 文件中使用本地 Docker 映像?【英文标题】:Is it possible to use a local Docker image in a docker-compose file for DockerComposeContainer? 【发布时间】:2019-07-09 02:25:00 【问题描述】:

在我的 docker-compose.yaml 文件中,我使用图像“my-service”(以及其他可以正常工作的远程图像)

version: "2"
services:
  myservice:
    image: my-service

通常我使用 io.fabric8 docker-maven-plugin 使用 maven 构建“my-service”映像。

我的 Dockerfile:

FROM vertx/vertx3-alpine
ENV VERTICLE_HOME /opt/lib
ENV NAME my-service
ENV EXEC_JAR_NAME my-service.jar
COPY target/my-service-1.0-SNAPSHOT.jar $VERTICLE_HOME/$EXEC_JAR_NAME
COPY target/lib $VERTICLE_HOME
COPY src/main/resources/settings.json /etc/company/myservice/settings.json
ENTRYPOINT ["sh", "-c"]
CMD ["java -cp $VERTICLE_HOME/$EXEC_JAR_NAME com.company.myservice.MyVerticle"]

有没有办法使用来自 Testcontainers 的 DockerComposeContainer 让 docker-compose 使用我的本地服务镜像?

这是我的测试设置

public class MyServiceIT 
    @ClassRule
    public static DockerComposeContainer compose =
            new DockerComposeContainer(new File("src/test/resources/docker-compose.yml"));

目前我在使用本地图像时收到以下错误消息。

7:15:34.282 [tc-okhttp-stream-454305524] INFO ???? [docker/compose:1.8.0] - STDERR: pull access denied for my-service, repository does not exist or may require 'docker login'
17:15:34.283 [main] WARN org.testcontainers.containers.DockerComposeContainer - Exception while pulling images, using local images if available

听起来我需要构建用于测试的映像,但我不知道该怎么做。

【问题讨论】:

【参考方案1】:

这不是错误消息,而只是docker-compose pull 失败时的警告,请参阅here。

您也可以让 Docker Compose 为您构建镜像(尽管在这种情况下强烈建议使用 withLocalCompose(true)

【讨论】:

谢谢!你让我意识到我的容器实际上已经启动并正常运行。我只是期待更多的日志。我能够通过docker ps 找到并进入我的容器以找到容器ID,然后在测试运行时找到docker exec -it <Container ID> bash。有没有办法像从命令行运行 docker-compose up 一样获得更多的输出?我尝试使用withTailChildContainers(true),但这似乎并没有改变任何东西。 没关系。 testcontainers.org/features/container_logs 为我指明了正确的方向。虽然使用 DockerComposeContainer 看起来你使用 withLogConsumer(servicename, logconsumer) 而不是 followOutpu(logconsumer)

以上是关于是否可以在 DockerComposeContainer 的 docker-compose 文件中使用本地 Docker 映像?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以判断一个对象是否在不同的 AppDomain 中运行?

是否可以使用 JavaScript 确定 GeoJSON 点是否在 GeoJSON 多边形内?

是否可以在 Cocoa 中确定文件是否是从别名打开的?

是否可以检查是否在 iOS 7 中启用了 iCloud KeyChain?

是否可以在接口中实现本机方法?

是否可以在 Swift 2.1 中检查目录是否为空? [复制]