docker部署gitea
docker run -itd --name gitea -p 3000:3000 \
-p 222:22 --restart=always \
-e USER_UID=1000 \
-e USER_GID=1000 \
-e DB_TYPE=mysql \
-e DB_HOST=192.168.0.154:3306 \
-e DB_NAME=gitea \
-e DB_USER=KF2eGB \
-e DB_PASSWD=1j4LbQ7tHwKF2eGB \
-e DOMAIN=192.168.0.54 \
-e SSH_DOMAIN=192.168.0.54 \
-e HTTP_PORT=3000 \
-e ROOT_URL=http://192.168.0.154:3000 \
-e SSH_PORT=222 \
-e SSH_LISTEN_PORT=22 \
-v /data/gitea/data:/data \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v ~/.ssh/:/data/git/.ssh \
gitea/gitea:1.15.2
##使用mysql数据库
docker run -itd --name gitea-mysql -p 3306:3306 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=gitea \
-e MYSQL_USER=gitea \
-e MYSQL_PASSWORD=gitea \
-e MYSQL_DATABASE=gitea \
-v /data/mysql/data:/var/lib/mysql \
mysql:latest
##使用PostgreSQL数据库
docker run -itd --name gitea-mysql -p 3306:3306 \
--restart=always \
-e POSTGRES_USER=gitea \
-e POSTGRES_PASSWORD=gitea \
-e POSTGRES_DB=gitea \
-v /data/postgres:/var/lib/postgresql/data \
postgres:13
docker部署drone
创建共享密钥
这里我们还需要创建一个共享密钥来供drone和docker-runner通信使用,我们可以使用openssl生成共享密钥:
$ openssl rand -hex 16
681fb75c68106b563100bec5ce16b563
sudo docker run -itd --name drone \
-p 3001:80 \
-p 9001:9000 \
--restart=always \
-v /data/drone/data:/data \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_DATABASE_DRIVER=sqlite3 \
-e DRONE_DATABASE_DATASOURCE=/data/database.sqlite \
-e DRONE_GITEA_SERVER=http://192.168.0.154:3000 \
-e DRONE_GIT_ALWAYS_AUTH=false \
-e DRONE_RPC_SECRET=681fb75c68106b563100bec5ce16b563 \
-e DRONE_SERVER_PROTO=http \
-e DRONE_SERVER_HOST=192.168.0.154:3001 \
-e DRONE_TLS_AUTOCERT=false \
-e DRONE_USER_CREATE=username:zyhadm,admin:true \
-e DRONE_GITEA_CLIENT_ID=78182c8c-e682-4499-8eee-0018852632a6 \
-e DRONE_GITEA_CLIENT_SECRET=HGtd9vYt75O26616hqXOi2Dqm9wH8gF36tCVroqVx4v \
drone/drone:2
#运行runner:
#在部署了drone之后还需要runner来运行任务
sudo docker run -itd \
-p 9300:3000 \
--restart always \
--name ssh-runner \
-e DRONE_DEBUG=true \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=drone \
-e DRONE_RPC_SECRET=681fb75c68106b563100bec5ce16b563 \
--link drone:drone \
drone/drone-runner-ssh
#部署docker-runner
#挂载是为了获得docker的进程
sudo docker run -itd \
--restart always \
--name docker-runner \
-p 3002:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=drone \
-e DRONE_RPC_SECRET=681fb75c68106b563100bec5ce16b563 \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=docker-runner \
--link drone:drone \
-e DRONE_DEBUG=false \
-e DRONE_TRACE=false \
drone/drone-runner-docker
#获取gitea的ID和秘钥


gitea中这里的URL地址为drone的地址
访问drone地址:192.168.0.154:3001 (确认授权)
drone的使用
### 部署案例
cat .drone.yaml
##代码克隆到容器中的目录
workspace:
base: /var/www/html
kind: pipeline
type: docker
name: filesystem-drone
steps:
- name: package
image: zhangyhclub/nginx-php7.4-swoole:v3
volumes:
##容器中挂载的目录
- name: maven-build
path: /opt/test-gitea-drone
##执行容器中的命令
commands:
- cp -r /var/www/html/* /opt/test-gitea-drone/
- echo "拷贝完成!"
##远程服务器主机
- name: build-start
image: appleboy/drone-ssh
settings:
host: 192.168.0.54
username: dato
password:
from_secret: ssh_password
port: 22
command_timeout: 5m
##远程主机执行脚本或命令
script:
- /opt/test.sh
- echo "容器部署OK"
##服务器映射的目录
volumes:
- name: maven-build
host:
path: /opt/test-gitea-drone
# drone执行触发器
trigger:
branch:
- master
cat test.sh
#!/bin/bash
sudo docker ps -a | grep test-gitea-drone
if [ $? -ne 0 ]; then
sudo docker run -itd --name test-gitea-drone -p 5580:80 \
-v /opt/test-gitea-drone:/var/www/html \
zhangyhclub/nginx-php7.4-swoole:v3
else
sudo docker rm -f test-gitea-drone
sudo docker run -itd --name test-gitea-drone -p 5580:80 \
-v /opt/test-gitea-drone:/var/www/html \
zhangyhclub/nginx-php7.4-swoole:v3
fi
近期评论