gpt4 book ai didi

docker - 在 docker compose 中安装卷后容器未启动

转载 作者:行者123 更新时间:2023-12-02 21:29:55 33 4
gpt4 key购买 nike

我有 4 项服务要通过 docker compose 运行:

version: "3"

services:
billingmock:
build:
context: ./mock/soap/billing
dockerfile: ./Dockerfile
ports:
- 8096:8096

salcusmock:
build:
context: ./mock/soap/salcus
dockerfile: ./Dockerfile
ports:
- 8088:8088

ngocsrestmock:
build:
context: ./mock/rest/ngocs-rest
dockerfile: ./Dockerfile
volumes:
- /test/mock-data/Ngocs-Rest-Mock:/usr/src/ngocs-rest-mock/
ports:
- 8091:8091

kafka:
image: <some-repo>.com/mce/kafka_local_r20-11
ports:
- 9092:9092
- 8080:8080
- 8081:8081
- 8082:8082
但是 ngocs 容器没有运行,当我检查我得到的那个容器的日志时,所有其他容器都在运行: Exited (1) 36 seconds ago
Error: Unable to access jarfile mocks-mock-ngocs-rest-executable-1.0.0-SNAPSHOT.jar
该服务的 dockerfile 是:
FROM openjdk:8
COPY /executable/target/mocks-mock-ngocs-rest-executable-1.0.0-SNAPSHOT.jar /usr/src/ngocs-rest-mock/
WORKDIR /usr/src/ngocs-rest-mock/
ENTRYPOINT ["java","-jar","mocks-mock-ngocs-rest-executable-1.0.0-SNAPSHOT.jar"]
我必须手动启动容器,然后它运行但未安装卷。好像是什么问题???此外,如果我删除 docker compose 中的卷部分,它就会运行。

最佳答案

如果您有 volumes:将主机目录绑定(bind)到容器目录,在容器启动时,该主机目录的内容始终完全隐藏底层镜像中的任何内容。在您的情况下,您在包含 jar 文件的目录上安装了一个目录,因此实际的应用程序被隐藏了。
您应该重组您的应用程序,以将数据与应用程序代码分开。使用简单的顶级目录,如 /app/data很常见,或者您可以将数据目录设置为应用程序目录的子目录。
完成此操作后,您可以更改 volumes:挂载到不同的目录:

# for example, a "data" subdirectory of the application directory
volumes:
- /test/mock-data/Ngocs-Rest-Mock:/usr/src/ngocs-rest-mock/data

关于docker - 在 docker compose 中安装卷后容器未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64699599/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com