Mer*_*hin 3 java jar docker spring-boot docker-compose
docker 容器无法访问通过挂载点访问的 jar 文件/my/project/dir。我确定这不是权限问题,因为我在本地更改了访问权限,因此它应该能够读/写/执行它。
这是Dockerfile:
FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
VOLUME ["/data/rrdtool", "/my/project/dir"]
ENTRYPOINT [ "java","-jar","/my/project/dir/build/libs/spring-project-0.1.0.jar" ]
Run Code Online (Sandbox Code Playgroud)
这是docker-compose.yml文件:
version: '2'
services:
db:
container_name: db1
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123
MYSQL_USER: user123
MYSQL_PASSWORD: pasw
MYSQL_DATABASE: mydb
expose:
- "3307"
db2:
container_name: db2
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123
MYSQL_USER: user123
MYSQL_PASSWORD: pasw
MYSQL_DATABASE: mydb2
expose:
- "3308"
spring:
container_name: spring-boot-project
build:
context: ./
dockerfile: Dockerfile
links:
- db:db1
- db2:db2
depends_on:
- db
- db2
expose:
- "8081"
ports:
- "8081:8081"
restart: always
Run Code Online (Sandbox Code Playgroud)
这是来自的输出docker-compose logs spring:
Error: Unable to access jarfile /my/project/dir/build/libs/spring-project-0.1.0.jar
Run Code Online (Sandbox Code Playgroud)
我没有看到您jar在任何地方将 复制到容器中。你应该尝试移动VOLUME从申报Dockerfile到compose文件到spring这样的服务:
volumes:
- /my/project/dir:/app
Run Code Online (Sandbox Code Playgroud)
然后在 Dockerfile 中,您应该指向目录:
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]
Run Code Online (Sandbox Code Playgroud)
稍后,如果您想部署它(例如),您应该将项目文件直接复制到映像中,而不是使用该volumes方法。所以Dockerfile你会这样做:
COPY . /app
Run Code Online (Sandbox Code Playgroud)
代替 VOLUME [..]
把它们放在一起:
发展:
Dockerfile:
FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]
Run Code Online (Sandbox Code Playgroud)
撰写文件:
version: '2'
services:
[..]
spring:
container_name: spring-boot-project
build: .
links:
- db:db1
- db2:db2
depends_on:
- db
- db2
ports:
- "8081:8081"
restart: always
volumes:
- /my/project/dir:/app
Run Code Online (Sandbox Code Playgroud)
部署:
Dockerfile(放置在项目的文件夹中,docker build 要求它的构建上下文位于当前目录中):
FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
COPY . /app
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]
Run Code Online (Sandbox Code Playgroud)
撰写文件:
version: '2'
services:
[..]
spring:
container_name: spring-boot-project
build: .
links:
- db:db1
- db2:db2
depends_on:
- db
- db2
expose:
- "8081"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20779 次 |
| 最近记录: |