gitea · 2021-09-14

gitea+drone

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
Ex 2.1