使用docker运行gogs服务
Wed, Feb 13, 2019
阅读时间 1 分钟
学习使用 gogs 搭建自己的 git 托管服务,但是不想在安装 gogs 时创建系统用户污染当前的 Mac 系统环境,决定使用 docker 启动该服务,同时学习一些基础的 docker 命令。
目标
-
使用 docker 和 docker-compose 运行并管理 gogs 服务
-
使用 caddy 为 gogs 搭建反向代理
-
简单配置 caddy 与 gogs 容器的 docker 网络
工具与组件
- docker for Mac:Mac环境下的 docker 服务版本,提供 docker 环境以及 docker-compose等命令
- gogs : 一个 go 语言实现的简单快速的git代码托管服务,类似于 github 和 gitlab
- caddy: go 语言实现的简单的web服务器,可进行反向代理,类似于 nginx
创建caddy配置
创建caddy
文件夹,并在文件夹下创建文件Caddyfile
localhost {
proxy / gogs:3000 {
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
}
log /var/log/caddy.log
gzip
#tls name@domain.com # 你的邮箱
}
使用 docker-compose 编排服务
创建docker-compose.yml
配置文件
version: '3'
services:
caddy:
container_name: caddy
image: abiosoft/caddy
volumes:
- "/home/caddy/Caddyfile:/etc/Caddyfile"
ports:
- "8081:2015"
# links:
# - gogs
restart: always
gogs:
container_name: gogs
image: gogs/gogs
volumes:
- /home/gogs/data:/data
ports:
- "3022:22"
restart: always
docker-compose 启动服务
在docker-compose.yml
所在文件夹下运行命令
docker-compose up -d
查看运行的容器,使用
docker-compose ps
或者
docker ps
其中 gogs 服务会使用3000
端口,但是没有进行端口绑定,无法从外部访问。caddy 使用2015
端口,并对外绑定8081
端口,该访问通过Caddyfile
配置文件转发到了 gogs 机器的3000
端口。docker-compose 可以自动发现主机名称的地址,无需通过IP。通过如下地址访问 gogs 服务:
http://127.0.0.1:8081
查看容器详细状态
docker inspect gogs
也可以进入正在运行的容器进行系统的状态、文件查看等操作
docker exec -it gogs /bin/bash
docker exec -it caddy /bin/sh
关闭服务
docker-compose stop
正常情况下关闭服务时容器不会被删除,重新启动时如果容器存在则不会再创建。docker-compose.yml
有修改时旧的容器不会自动更新,需要关闭服务并删除容器,然后重新创建容器启动
docker-compose down
docker-compose up -d
或者直接强制重新创建容器启动
docker-compose up -d --force-recreate
网络配置固定IP
也可以自定义网络,然后给 gogs 和 caddy 容器分配固定的ip。
查看当前的docker网络
docker network ls
docker-compose.yml
配置网络
version: '3'
services:
caddy:
container_name: caddy
image: abiosoft/caddy
volumes:
- "/home/caddy/Caddyfile:/etc/Caddyfile"
ports:
- "8081:2015"
networks:
default:
ipv4_address: 172.18.0.23
# links:
# - gogs
restart: always
gogs:
container_name: gogs
image: gogs/gogs
volumes:
- /home/gogs/data:/data
ports:
- "3022:22"
networks:
default:
ipv4_address: 172.18.0.25
restart: always
networks:
default:
ipam:
config:
- subnet: 172.18.0.0/16
# gateway: 172.18.0.1
# ip_range: 172.18.0.0/24
查看网络配置详情
docker network inspect gogs_default
docker-compose down
命令会同时移除网络。也可以手动移除网络:
docker network rm gogs_default