简记使用docker-compose 一种非自动化Docker部署

  1. 编写DockerFile文件

    FROM lwieske/java-8
      
    #容器元信息,帮助信息,Metadata,类似于代码注释
    MAINTAINER [email protected]
    
    # 容器内部环境变量
    ENV TZ=Asia/Shanghai
    ENV JAVA_OPTS="-Xms128m -Xmx256m"
    
    RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
    # 创建目录
    RUN mkdir -p /api-blog
    
    # 工作目录
    WORKDIR /api-blog
    
    # 暴露端口
    EXPOSE 81
    
    # 将本地Jar添加到Docker镜像中 【Jar包位置】 【容器内部位置】
    ADD ./Blog-api-0.0.1-SNAPSHOT.jar ./
    
    # 睡眠5秒 启动Jar包
    CMD sleep 5;java $JAVA_OPTS "-Dfile.encoding=UTF-8" -jar Blog-api-0.0.1-SNAPSHOT.jar
    
  2. 编写docker-compose.yml

    version: '2'
    services:
      # docker-compose build 启动的名称
      api-blog:
        # 构建DockerFile镜像
        build:
          # 指定DockerFile文件位置
          context: ./build/api-blog
        # 配置Docker启动自动启动
        restart: always
        # 镜像启动后 容器名称
        container_name: api-blog
        # 镜像名称
        image: api-blog
        # 端口映射 宿主机端口:容器端口
        ports:
          - "81:81"
        # 文件挂载,主要将Jar产生的日志映射到宿主机上
        volumes:
          - "./build/api-blog/logs:/api-blog/log/"
    
  3. 看一下每个文件存放的位置

    [root home]# tree -L 3
    .
    ├── build
    │   ├── api-blog
    │   │   ├── Blog-api-0.0.1-SNAPSHOT.jar
    │   │   ├── Dockerfile
    │   │   └── logs
    ├── docker-compose.yml
    
  4. 项目打包

    # 打包命令
    mvn clean -Dmaven.test.skip=true package
    
  5. 使用scp将Jar上传至服务器

    # 拷贝文件    被拷贝文件                     目标目录
    scp -P 22 ./target/Blog-api-0.0.1-SNAPSHOT.jar 服务器用户名@服务器IP:/home/build/api-blog
    
  6. 在服务器上进行镜像编译与启动容器

    建议在docker-compose.yml目录下进行操作

    # 次命令将 yml中api-blog 指定的 DockerFile 构建为镜像 并启动
    docker-compose up --build -d api-blog
    

最后,可以将4,5,6步骤的命令汇聚为一个shell脚本

#!/usr/bin/env bash

# 编译Maven项目
mvn clean -Dmaven.test.skip=true package

# 拷贝文件    被拷贝文件                     目标目录
scp -P 22 ./target/Blog-api-0.0.1-SNAPSHOT.jar 服务器用户名@服务器IP:/home/build/api-blog

# ssh连接服务器 执行命令
ssh 服务器用户名@服务器IP -p 22 'cd /home; docker-compose up --build -d api-blog; sleep 5s; docker logs -f api-blog'

猜你喜欢

转载自blog.csdn.net/u013494827/article/details/126650644