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文件中要设置
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出镜像并部署。如下图所示:
评论区