docker 搭建 gogs,drone , mysql 踩坑记录,防止以后再踩啊
- docker 创建 桥接网络
docker network create netname
- docker 创建mysql 容器
docker run -ti --name gogs-mysql -v /data/mysql/data:/var/lib/mysql -p 3310:3306 --network netname -e MYSQL_ROOT_PASSWORD=123123 mysql:5.7
重点: mysql数据库的密码必须定义不能跳过
- docker 创建gogs容器
docker pull gogs/gogs # 默认获取最新版本gogs
docker run --name gogs -ti --network netname -p 10010:3000 -p 10011:22 -v /data/gogs/data:/data --link gogs-mysql gogs
// 默认把gogs里的数据写到本地目录防止数据丢失
外部通过访问10010端口可以看到gogs的web目录, 具体的可以通过nginx代理,这里不是本教程重点
link 参数是两个容器之间可以通过ip互相访问
再可以访问gogs配置页面的时候
docker exec -ti gogs bash
cat /etc/hosts
可以看到mysql再gogs内的内部ip
写到指定位置就可以进入了
- 搭建drone
drone干啥的不说
重点1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
docker 这个运行文件必须同样挂在到容器内部
重点2:
DRONE_USER_CREATE=username:volcan0,admin:true
必须创建admin账户,不然是不能挂载宿主的本地目录的,同样再进入仓库设置时勾选 Trusted
DRONE_GOGS_SERVER=https://你的.com
DRONE_SERVER_HOST=你的.com
可以设置ip或者直接域名都没有问题,最好ip吧,不然改来改去的
最后附上docker-compose.yml
version: '2'
services:
mysql-gogs:
image: 'mysql:5.7'
restart: always
ports:
- '10036:3306'
volumes:
- /data/project/gogs-mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
gogs:
image: gogs/gogs
ports:
- '10081:22'
- '10080:3000'
volumes:
- /data/project/gogs/data:/data
restart: always
links:
- mysql-gogs:db
drone-server:
image: drone/drone:1
ports:
- '10083:80'
- '10085:8000'
- '10084:9000'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/project/drone/data:/var/lib/drone
restart: always
environment:
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_USER_CREATE=username:git,admin:true
- DRONE_GOGS_SERVER=192.168.10.12
- DRONE_SERVER_HOST=192.168.10.12
- DRONE_SERVER_PROTO=http
- DRONE_SECRET=handhand
- DRONE_GOGS_PRIVATE_MODE=true
- DRONE_TLS_AUTOCERT=false
drone-agent:
image: drone/agent:1
command: agent
restart: always
depends_on: [ drone-server ]
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET=handhand
网友评论