多次调用docker容器内的jar主文件

时间:2019-08-09 18:45:49

标签: java docker docker-compose

我看到对输出流的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

1 个答案:

答案 0 :(得分:0)

当您指定restart: always时,只要容器退出,它将立即重新启动。另外,由于主要的容器过程就是您放入此jar中的过程,因此每次main()完成后,容器都会重新启动。

如果您正在积极地开发它,我建议您首先尝试使应用程序在非Docker上下文中工作,然后将其打包。更典型的重启策略是restart: on-failure,如果正常退出容器(状态代码为0),它将不会重启容器。还可以考虑将这组选项打包到Dockerfile中,这样就可以运行它而无需单独需要jar文件。