Briefly use docker-compose for a non-automated Docker deployment

  1. Write DockerFile file

    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. writedocker-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. Take a look at where each file is stored

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

    # 打包命令
    mvn clean -Dmaven.test.skip=true package
    
  5. scpUpload the Jar to the server using

    # 拷贝文件    被拷贝文件                     目标目录
    scp -P 22 ./target/Blog-api-0.0.1-SNAPSHOT.jar 服务器用户名@服务器IP:/home/build/api-blog
    
  6. Compile the image and start the container on the server

    It is recommended docker-compose.ymlto operate in the directory

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

Finally, the commands of steps 4, 5, and 6 can be aggregated into one shellscript

#!/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'

Guess you like

Origin blog.csdn.net/u013494827/article/details/126650644