之前部署springboot的时候都是一个一个启动的,当给用户部署几十个容器的时候,发现太累了,所以学习了docker-compose来一键部署

1:先创建dockerfile

FROM openjdk:8-jre-alpine
MAINTAINER   zhangwei

#容器运行时监听的端口
WORKDIR /usr/local
ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-jar","-jar","/usr/local/game-dtc.jar"]

2:编写docker-compose

version: "2" #版本号
services: 
  dtc-server: #服务名称
    build: 
      context: .
      dockerfile: DockerfileDTCserver
    networks:
      - compose
    ports: 
      - "11104:11104"  #暴露的端口信息和docker run -d -p 80:80 一样
    restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
    container_name: dtc-server #容器名称
    #挂载文件ps:如果是挂载文件必须在容器中也指定名称,推荐是挂载文件夹,下面只是做个文件挂载的案例也可以
    #挂载文件夹/root/compose_test/jdk/:/data
    volumes:  
      - /usr/local/project/dtc-server/dtc-server.jar:/var/local/dtc-server.jar
      - /etc/localtime:/etc/localtime
    mem_limit: 700m #最大内存使用不超过700m
    entrypoint: java -jar /var/local/dtc-server.jar #启动容器后执行的命令
  game-dtc: #服务名称
    build: 
      context: .
      dockerfile: DockerfileGameDTC
    networks:
      - compose
    ports: 
      - "11103:11103"  #暴露的端口信息和docker run -d -p 80:80 一样
    restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
    container_name: game-dtc #容器名称
    #挂载文件ps:如果是挂载文件必须在容器中也指定名称,推荐是挂载文件夹,下面只是做个文件挂载的案例也可以
    #挂载文件夹/root/compose_test/jdk/:/data
    volumes:  
      - /usr/local/project/game-dtc/game-dtc.jar:/var/local/game-dtc.jar
      - /etc/localtime:/etc/localtime
    mem_limit: 700m #最大内存使用不超过700m
    entrypoint: java -jar /var/local/game-dtc.jar #启动容器后执行的命令  

其中mem_limit用于控制容器默认启动时会使用 1/16*物理内存的现象,导致几个服就占满了全部内存。

需要注意的是,当我使用1.24版本的时候,不支持mem_limit属性。所以我改成了1.19版本的。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐