侧边栏壁纸
博主头像
进一步,海阔天空 博主等级

进一步,海阔天空

  • 累计撰写 140 篇文章
  • 累计创建 19 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Drone自动部署Springboot项目到docker

海阔天空
2022-05-27 / 2 评论 / 1 点赞 / 1029 阅读 / 0 字

Drone的安装与配置

drone的安装与配置请移步到我的这篇文章 drone安装与配置
另外,在安装drone的服务器上,要开启docker的远程访问API,如果不开启,发布镜像时会出现>unix://localhost:80: No such file or directory错误。
配置如下:

vim /usr/lib/systemd/system/docker.service

在ExecSart部分加入-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES \
          -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

重启docker

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker.service

修改项目的.drone.yml文件

在springboot项目的根目录下加入一个settings.xml文件,设置maven使用阿里云的代理镜像。内容如下:

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
    <localRepository>/Users/zhangdx/.m2/repository</localRepository>
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun</name>
            <mirrorOf>central</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
    </mirrors>
    <pluginGroups>
        <pluginGroup>org.apache.maven.plugins</pluginGroup>
        <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
</settings>

打开Springboot项目根目录下的.drone.yml文件,进行如下配置:

name: default
kind: pipeline
clone:
  skip_verify: true
steps:
  - name: build
    image: maven:3-jdk-8
    commands:
      - mvn clean package -DskipTests=true -s settings.xml -B -U
  - name: docker
    image: plugins/docker
    pull: if-not-exists
    settings:
      registry: registry.cn-shanghai.aliyuncs.com/pro/proname
      username:
        from_secret: registry_aliyun_username
      password:
        from_secret: registry_aliyun_password
      tags:
        - latest
      repo: registry.cn-shanghai.aliyuncs.com/pro/proname
      mirror: https://hub-mirror.c.163.com
      dockerfile: Dockerfile
  - name: deploy
    image: appleboy/drone-ssh
    settings:
      host: 192.168.xxx.69
      username:
        from_secret: ssh_username_69
      password:
        from_secret: ssh_passpword_69
      port: 22
      script:
        - echo deploy...
        - docker login --username=${registry_aliyun_username} --password=${registry_aliyun_password} registry.cn-shanghai.aliyuncs.com
        - docker pull registry.cn-shanghai.aliyuncs.com/pro/proname:latest
        - docker rm -f proname || true
        - docker run --name=proname --restart=always --network=network_172_19 -d -p 8095:8095 -e "SPRING_PROFILES_ACTIVE=prod" -e "JAVA_OPTS='-Xmx1g -Xms1g'" registry.cn-shanghai.aliyuncs.com/pro/proname:latest

Springboot项目的Dockerfile文件非常简单,只要做简单的打包即可,pom.xml文件中要设置proname

FROM openjdk:8
VOLUME /tmp
ADD target/proname.jar proname.jar
EXPOSE 8095
ENTRYPOINT ["java","-jar","proname.jar"]

drone配置主要包括三个部分,maven编译项目,docker打包项目并push到aliyun,ssh到部署服务器,pull出镜像并部署。如下图所示:
drone自动部署springboot项目

1

评论区