参考资料
json
{
"title": "rone Docs",
"desc": "Drone is a self-service Continuous Integration platform for busy development teams.",
"logo": "https://docs.drone.io/logo.svg",
"link": "https://docs.drone.io/",
"background": "#fff"
}json
{
"title": "Drone Runner",
"desc": "Drone is a self-service Continuous Integration platform for busy development teams.",
"logo": "https://docs.drone.io/logo.svg",
"link": "https://docs.drone.io/runner/docker/installation/linux/",
"background": "#fff"
}json
{
"title": "Docker Compose",
"desc": "Compose 是用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务.",
"logo": "/assets/svg/common/docker.svg",
"link": "https://docs.docker.com/reference/",
"background": "#fff"
}先决条件
服务器已部署好gitea
根据官方指引,打开gitea创建 OAuth 应用程序,创建好后如下重定向url请写自己的地址,该地址可以访问到droe

创建共享密钥
shellopenssl rand -hex 16 bea26a2221fd8090ea38720fc445eca6
编写Docker Compose.yml文件,文件内容如下👇
yml
version: "3"
networks:
my-net:
external: true
services:
server:
image: drone/drone:2
container_name: drone
environment:
- TZ=Asia/Shanghai
- DRONE_DATABASE_DRIVER=mysql
- DRONE_DATABASE_DATASOURCE=drone:okZ1c510^*My7Ux@tcp(mysql:3306)/drone?parseTime=true
- DRONE_USER_CREATE=username:system,admin:true
- DRONE_GITEA_SERVER=可以访问到gitea的地址
- DRONE_GITEA_CLIENT_ID=3e66e3f7-5fd4-4b1a-ad8e-4675864c08f4
- DRONE_GITEA_CLIENT_SECRET=6Y2uKOZSqQ6Em4AJXGc7t2kl6EW0BWf6KpgeKwbzsLkI
- DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2
- DRONE_SERVER_HOST=可以访问到的地址
- DRONE_SERVER_PROTO=http
restart: always
networks:
- my-net
ports:
- "8080:80"
- "4443:443"
runner:
image: drone/drone-runner-docker:1
container_name: runner
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=可以访问到的地址
- DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=my-first-runner
restart: always
networks:
- my-net
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- server解释:
my-net提前构建的网络的名称,external: true使用外部网络,也就是说使用我之前创建好的网络- drone
DRONE_DATABASE_DRIVER=mysql:链接数据库类型。DRONE_DATABASE_DATASOURCE=drone:okZ1c510^*My7Ux@tcp(mysql:3306)/drone?parseTime=true:我的mysql也安装在docker该my-net网络下使用mysql:3306可以访问,非此方法请填写完整访问路径。- ※※
DRONE_USER_CREATE=username:system,admin:true:设置admin账户,请与登录gitea登录账号相同。
DRONE_GITEA_SERVER=可以访问到gitea的地址:访问gitea的地址。DRONE_GITEA_CLIENT_ID=3e66e3f7-5fd4-4b1a-ad8e-4675864c08f4:gitea生产客户端id。DRONE_GITEA_CLIENT_SECRET=6Y2uKOZSqQ6Em4AJXGc7t2kl6EW0BWf6KpgeKwbzsLkI:gitea生成的客户端密钥。DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2:openssl rand -hex 16生成的字符串。DRONE_SERVER_HOST=可以访问到的地址:访问drone的地址。DRONE_SERVER_PROTO=http:请求类型。
- drone-runner
DRONE_RPC_PROTO=http:请求类型。DRONE_RPC_HOST=可以访问到的地址:请求drone的地址DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2:openssl rand -hex 16生成的字符串。DRONE_RUNNER_CAPACITY=2:限制运行器可以执行的并发管线的数量DRONE_RUNNER_NAME=my-first-runner:设置运行器的名称
- 其余环境变量可以参考如下
执行命令
shell
docker compose up -d查看运行情况
shell
docker logs drone
docker logs runner
docker ps -a访问drone

如同所示点击continue进行登录,登陆成功后则搭建成功!
可能会遇到的问题
- 访问地址填写错误
- 未设置admin账户
解决方法,打开浏览器,输入对应地址测试是否能访问,停止并删除容器,从新构建。查看 docker logs 展示的日志,判断问题。
