使用drone——10分钟搞定的内网自动部署
文章目录10分钟搞定的内网自动部署获取`gitlab`的权限(Create an OAuth Application)创建一个`gitlab`与`drone`的共享秘钥docker 启动安装runnerdocker-runnerssh-runner如何使用10分钟搞定的内网自动部署获取gitlab的权限(Create an OAuth Application)重定向的URL必须是drone 安装的
·
文章目录
10分钟搞定的内网自动部署
获取gitlab
的权限(Create an OAuth Application)
重定向的URL必须是drone 安装的机器路径可以是IP地址
例如: 192.168.29.11/login
创建一个gitlab
与drone
的共享秘钥
$ openssl rand -hex 16
bea26a2221fd8090ea38720fc445eca6
docker 启动
# 注意!!! 替换需将花括号一起替换掉
$ docker run \
--volume=/var/lib/drone:/data \ # 数据库保存地址,自定义
--env=DRONE_GITLAB_SERVER=https://gitlab.com \ # gitlab 网址,内网可以是IP地址
--env=DRONE_GITLAB_CLIENT_ID={{DRONE_GITLAB_CLIENT_ID}} \ # 第一步生成的client_id
--env=DRONE_GITLAB_CLIENT_SECRET={{DRONE_GITLAB_CLIENT_SECRET}} \ # 第一步生成的client_secret
--env=DRONE_RPC_SECRET={{DRONE_RPC_SECRET}} \ # 第二步生成的秘钥
--env=DRONE_SERVER_HOST={{DRONE_SERVER_HOST}} \ # drone 运行的服务器地址
--env=DRONE_SERVER_PROTO={{DRONE_SERVER_PROTO}} \ # 指定http
--publish=80:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:1
安装runner
docker-runner
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=https://gitlab.com \
-e DRONE_RPC_SECRET={{DRONE_RPC_SECRET}} \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=${HOSTNAME} \ # 这个不需要替换,默认为机器的名称
-p 3000:3000 \
--restart always \
--name runner \
drone/drone-runner-docker:latest
ssh-runner
docker run -d \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=https://gitlab.com \
-e DRONE_RPC_SECRET={{DRONE_RPC_SECRET}} \
-p 3000:3000 \
--restart always \
--name runner \
drone/drone-runner-ssh
log
time="2021-06-21T03:35:08Z" level=info msg="starting the server" addr=":3000"
time="2021-06-21T03:35:08Z" level=info msg="successfully pinged the remote server"
如何使用
使用目的: 将GO web 项目 通过dockerfile 进行打包运行,
故,我将使用ssh-runner
FROM golang:1.14 as builder
ENV GOSUMDB off
ENV GOPROXY https://goproxy.cn
ENV GO111MODULE on
# 增加分层,减少下载依赖包
WORKDIR /go/cache
ADD go.mod .
ADD go.sum .
RUN go mod download
RUN mkdir -p /go/src/project
WORKDIR /go/src/project
COPY . .
#RUN echo -e http://mirrors.ustc.edu.cn/alpine/v3.7/main/ >> /etc/apk/repositories
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM alpine:latest
RUN apk update && apk add --no-cache ca-certificates
# 设置alpine 时间为上海时间
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
WORKDIR /root/
COPY --from=builder /go/src/project/main .
COPY --from=builder /go/src/project/config.yaml .
COPY --from=builder /go/src/project/run.sh .
EXPOSE 8888
ENTRYPOINT ["/root/main"]
run.sh
简单脚本,可以根据自己要求,修改
#!/usr/bin/env bash
#定义应用名
echo "应用名称为:$1";
echo "应用使用端口:$2"
# 执行相关命令
echo '根据dockerfile 构建镜像'
docker build -f Dockerfile -t $1 .
docker stop $1
echo docker rm $1
docker rm $1
echo docker run -d --name= $1 -p $2:$2 -v /data/www/log/$1/:/log $1:latest
docker run -d --name=$1 -p $2:$2 -v /data/www/log/$1/:/log $1:latest
#echo "清理中间镜像,可以一个月清一次的"
#docker image prune -f
.drone.yml
name: default
kind: pipeline
type: ssh
server:
host: {IP}
user: {user}
password:
from_secret: password # 在drone 里面的项目进行配置
steps:
- name: publish
commands:
- chmod 755 run.sh
- ./run.sh {{应用名称}} 8888
更多推荐
已为社区贡献1条内容
所有评论(0)