我看到对输出流的8个调用,docker容器正在创建jar文件的多个实例吗?
public static void main(String[] args) throws Exception {
System.out.println("main");
}
输出
main
main
main
main
main
main
main
docker-compose文件
department:
image: openjdk:jdk-alpine
container_name: "department"
restart: always
ports:
- 9082:8080
- 65195:65193
volumes:
- ./Dept/target/Dept-jar-with-dependencies.jar:/deployments/Dept-jar-with-dependencies.jar
environment:
- JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=0.0.0.0:65193,suspend=n,server=y -Djava.net.preferIPv4Stack=true
command: java -jar /deployments/Dept-jar-with-dependencies.jar
答案 0 :(得分:0)
当您指定restart: always
时,只要容器退出,它将立即重新启动。另外,由于主要的容器过程就是您放入此jar中的过程,因此每次main()
完成后,容器都会重新启动。
如果您正在积极地开发它,我建议您首先尝试使应用程序在非Docker上下文中工作,然后将其打包。更典型的重启策略是restart: on-failure
,如果正常退出容器(状态代码为0),它将不会重启容器。还可以考虑将这组选项打包到Dockerfile
中,这样就可以运行它而无需单独需要jar文件。