docker部署jar/war文件

以下是java -jar 可以启动的部署包为依据的
docker部署jar/war文件有两种方式
1、先把部署包打包成docker镜像,然后通过docker run 或者docker-compose启动
2、直接通过docker-compose启动
以下以jar包为例,war包部署方式也是一样的
第一种方式
1、上传部署包到服务器
docker部署jar/war文件_第1张图片

2、编写DockerFile(需要在部署包的当前路径下)

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD xxx.jar app.jar
ENTRYPOINT java $JAVA_OPTS -jar /app.jar
#ENTRYPOINT ["java","-Duser.timezone=GMT+08","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

3、编写构建docker镜像的脚本(需要在部署包的当前路径下)

#构建镜像  最后面这个 . 不能省略,这个指的是当前路径 
docker build -t xxx:prod  -f  DockerfileBfu .
docker save -o  bfu.tar xxx:prod

4、启动
docker run方式启动

#  --name指定启动容器名称,最后一个参数指定镜像
docker run -d --name=xxx -p 20909:20909 xxx:prod

docker-compose方式启动
docker-compose -f docker-compose.yml up -d xxx
以下是docker-compose.yml内容

version: "3"
services:
  xxx:
    image: "xxx:prod"  # 镜像名称:tag, 可以通过docker images查看
    container_name: "xxx" # 自定义
    restart: always
    #network_mode: host
    ports:
      - 20909:20909
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - server_port=20909
      - db_url=xxx
      - db_username=xxx
      - db_password=xxx
      - redis_host=xxx
      - redis_password=xxx
      - redis_port=xxx
      - redis_database=xxx
      - JAVA_OPTS=-Xms512m -Xmx512m -Xmn200m -Xss228k -Duser.timezone=GMT+08 -Djava.security.egd=file:/dev/./urandom
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /data/xxx/logs:/data/logs

第二种方式
启动

# xxx为对应docker-compose.yml中配置的
docker-compose -f docker-compose.yml up -d xxx

这种方式的好处就是有变更的时候上传部署包到服务器后直接启动就可以,不用再重新构建镜像
以下是docker-compose.yml内容

version: "3"
services:
  xxx:
    # 指定容器名称
    container_name: xxx
    # 重启机制
    restart: always
    image: jdk:1.8
    volumes:
      # 本地jar包路径
      - /data/xxx/xxx.war:/xxx.war
      # 挂载日志 -v A:B ,A指宿主机位置,B指容器位置
      - ./logs:/logs
      # 指定容器时间为宿主机时间
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /data/xxx/logs:/data/logs
    # 访问端口
    ports:
      - "20950:20950"
    environment:
      # 指定时区
      - TZ="Asia/Shanghai"
      - JAVA_OPTS=-Xms512m -Xmx512m -Xmn200m -Xss228k -Duser.timezone=GMT+08 -Djava.security.egd=file:/dev/./urandom
    #启动容器后执行的命令
   # entrypoint: java -server -Xms256m -Xmx256m -jar -Dserver.port=20950 -Dspring.profiles.active=developpostgresql g1cloud-dms.war
    entrypoint: nohup java -jar xxx.war --server_port=20950 --db_url=xxx --db_username=xxx --db_password=xxx --redis_database=xxx --redis_host=xxx --redis_password=xxx --redis_port=xxx &

你可能感兴趣的:(docker,docker)