# Docker for Gogs
![Docker pulls](https://img.shields.io/docker/pulls/gogs/gogs?logo=docker&style=for-the-badge)
Visit [Docker Hub](https://hub.docker.com/u/gogs) or [GitHub Container registry](https://github.com/gogs/gogs/pkgs/container/gogs) to see all available images and tags.
## Usage
To keep your data out of Docker container, we do a volume (`/var/gogs` -> `/data`) here, and you can change it based on your situation.
```sh
# Pull image from Docker Hub.
$ docker pull gogs/gogs
# Create local directory for volume.
$ mkdir -p /var/gogs
# Use `docker run` for the first time.
$ docker run --name=gogs -p 10022:22 -p 10880:3000 -v /var/gogs:/data gogs/gogs
# Use `docker start` if you have stopped it.
$ docker start gogs
```
Note: It is important to map the SSH service from the container to the host and set the appropriate SSH Port and URI settings when setting up Gogs for the first time. To access and clone Git repositories with the above configuration you would use: `git clone ssh://git@hostname:10022/username/myrepo.git` for example.
Files will be store in local path `/var/gogs` in my case.
Directory `/var/gogs` keeps Git repositories and Gogs data:
/var/gogs
|-- git
| |-- gogs-repositories
|-- ssh
| |-- # ssh public/private keys for Gogs
|-- gogs
|-- conf
|-- data
|-- log
#### Custom directory
The "custom" directory may not be obvious in Docker environment. The `/var/gogs/gogs` (in the host) and `/data/gogs` (in the container) is already the "custom" directory and you do not need to create another layer but directly edit corresponding files under this directory.
#### Using Docker volumes
```sh
# Create docker volume.
$ docker volume create --name gogs-data
# Use `docker run` for the first time.
$ docker run --name=gogs -p 10022:22 -p 10880:3000 -v gogs-data:/data gogs/gogs
```
## Settings
### Application
Most of the settings are obvious and easy to understand, but there are some settings can be confusing by running Gogs inside Docker:
- **Repository Root Path**: keep it as default value `/home/git/gogs-repositories` because `start.sh` already made a symbolic link for you.
- **Run User**: keep it as default value `git` because `build/finalize.sh` already setup a user with name `git`.
- **Domain**: fill in with Docker container IP (e.g. `192.168.99.100`). But if you want to access your Gogs instance from a different physical machine, please fill in with the hostname or IP address of the Docker host machine.
- **SSH Port**: Use the exposed port from Docker container. For example, your SSH server listens on `22` inside Docker, **but** you expose it by `10022:22`, then use `10022` for this value. **Builtin SSH server is not recommended inside Docker Container**
- **HTTP Port**: Use port you want Gogs to listen on inside Docker container. For example, your Gogs listens on `3000` inside Docker, **and** you expose it by `10880:3000`, but you still use `3000` for this value.
- **Application URL**: Use combination of **Domain** and **exposed HTTP Port** values (e.g. `http://192.168.99.100:10880/`).
Full documentation of application settings can be found [here](https://github.com/gogs/gogs/blob/main/conf/app.ini).
### Container options
This container has some options available via environment variables, these options are opt-in features that can help the administration of this container:
- **SOCAT_LINK**:
- <u>Possible value:</u>
`true`, `false`, `1`, `0`
- <u>Default:</u>
`true`
- <u>Action:</u>
Bind linked docker container to localhost socket using socat.
Any exported port from a linked container will be binded to the matching port on localhost.
- <u>Disclaimer:</u>
As this option rely on the environment variable created by docker when a container is linked, this option should be deactivated in managed environment such as Rancher or Kubernetes (set to `0` or `false`)
- **RUN_CROND**:
- <u>Possible value:</u>
`true`, `false`, `1`, `0`
- <u>Default:</u>
`false`
- <u>Action:</u>
Request crond to be run inside the container. Its default configuration will periodically run all scripts from `/etc/periodic/${period}` but custom crontabs can be added to `/var/spool/cron/crontabs/`.
- **BACKUP_INTERVAL**:
- <u>Possible value:</u>
`3h`, `7d`, `3M`
- <u>Default:</u>
`null`
- <u>Action:</u>
In combination with `RUN_CROND` set to `true`, enables backup system.\
See: [Backup System](#backup-system)
- **BACKUP_RETENTION**:
- <u>Possible value:</u>
`360m`, `7d`, `...m/d`
- <u>Default:</u>
`7d`
- <u>Action:</u>
Used by backup system. Backups older than specified in expression are deleted periodically.\
See: [Backup System](#backup-system)
- **BACKUP_ARG_CONFIG**:
- <u>Possible value:</u>
`/app/gogs/example/custom/config`
- <u>Default:</u>
`null`
- <u>Action:</u>
Used by backup system. If defined, supplies `--config` argument to `gogs backup`.\
See: [Backup System](#backup-system)
- **BACKUP_ARG_EXCLUDE_REPOS**:
- <u>Possible value:</u>
`test-repo1`, `test-repo2`
- <u>Default:</u>
`null`
- <u>Action:</u>
Used by backup system. If defined, supplies `--exclude-repos` argument to `gogs backup`.\
See: [Backup System](#backup-system)
- **BACKUP_EXTRA_ARGS**:
- <u>Possible value:</u>
`--verbose --exclude-mirror-repos`
- <u>Default:</u>
`null`
- <u>Action:</u>
Used by backup system. If defined, append content to arguments to `gogs backup`.\
See: [Backup System](#backup-system)
## Backup system
Automated backups with retention policy:
- `BACKUP_INTERVAL` controls how often the backup job runs and supports interval in hours (h), days (d), and months (M), eg. `3h`, `7d`, `3M`. The lowest possible value is one hour (`1h`).
- `BACKUP_RETENTION` supports expressions in minutes (m) and days (d), eg. `360m`, `2d`. The lowest possible value is 60 minutes (`60m`).
## Upgrade
:exclamation::exclamation::exclamation:<span style="color: red">**Make sure you have volumed data to somewhere outside Docker container**</span>:exclamation::exclamation::exclamation:
Steps to upgrade Gogs with Docker:
- `docker pull gogs/gogs`
- `docker stop gogs`
- `docker rm gogs`
- Finally, create a container for the first time and don't forget to do the same for the volume and port mapping.
## Known issues
- The docker container cannot currently be built on Raspberry 1 (armv6l) as our base image `alpine` does not have a `go` package available for this platform.
## Useful links
- [Share port 22 between Gogs inside Docker & the local system](http://www.ateijelo.com/blog/2016/07/09/share-port-22-between-docker-gogs-ssh-and-local-system)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Gogs轻量级git服务 v0.13.0 (2000个子文件)
GNU General Public License v3.0 34KB
GNU Affero General Public License v3.0 33KB
GNU Library General Public License v2.0 24KB
Mozilla Public License 1.0 18KB
GNU General Public License v2.0 17KB
Affero General Public License v1.0 15KB
Mozilla Public License 2.0 14KB
GNU General Public License v1.0 12KB
Eclipse Public License 1.0 11KB
Educational Community License v2.0 11KB
Academic Free License v3.0 10KB
Apache License 2.0 10KB
Academic Free License v2.0 9KB
Artistic License 2.0 8KB
GNU Lesser General Public License v3.0 7KB
Artistic License 1.0 5KB
Apache License 1.0 2KB
Educational Community License v1.0 2KB
Creative Commons CC0 1.0 Universal 7KB
GNU Lesser General Public License v2.1 25KB
Mozilla Public License 1.1 23KB
GNU Free Documentation License v1.1 17KB
Academic Free License v2.1 9KB
Academic Free License v1.1 5KB
Apache License 1.1 2KB
GNU Free Documentation License v1.2 20KB
Academic Free License v1.2 5KB
GNU Free Documentation License v1.3 22KB
Abstyles License 730B
Actionscript 300B
Ada 51B
Agda 8B
Android 394B
Anjuta 78B
AppceleratorTitanium 45B
AppEngine 58B
Archives 295B
ArchLinuxPackages 75B
Autotools 181B
install-as-service.bat 932B
BricxCC 72B
BSD 2-clause License 1KB
BSD 3-clause License 1KB
BSD 4-clause License 2KB
C 246B
C Sharp 1KB
C++ 242B
CakePHP 136B
CFWheels 205B
ChefCookbook 77B
Cloud9 45B
CMake 89B
CodeIgniter 106B
CodeKit 54B
CommonLisp 26B
Composer 250B
Concrete5 42B
nsswitch.conf 263B
Coq 18B
CraftCMS 120B
semantic-2.4.2.min.css 614KB
jquery.minicolors.css 96KB
gogs.min.css 63KB
viewer.css 48KB
font-awesome.min.css 28KB
jquery.datetimepicker.css 17KB
simplemde.min.css 11KB
dropzone.min.css 9KB
octicons.min.css 8KB
default.css 1KB
github.css 1KB
tiki.css 439B
tiddlywiki.css 220B
CUDA 38B
grabbing.cur 326B
grab.cur 326B
CVS 39B
Dart 234B
DartEditor 19B
Default 119B
Default 23B
Delphi 1KB
DM 29B
Dockerfile 886B
.dockerignore 144B
down 0B
Dreamweaver 47B
Drupal 605B
Eagle 401B
Eclipse 458B
.editorconfig 303B
EiffelStudio 35B
Elisp 36B
Elixir 34B
Emacs 320B
Ensime 57B
icons.eot 104KB
brand-icons.eot 96KB
fontawesome-webfont.eot 75KB
octicons.eot 43KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
csdn1789999
- 粉丝: 0
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 个人原创STM32F1 BOOTLOADER,主控芯片为STM32F103VET6
- Alpaca 交易 API 的 Python 客户端.zip
- 基于Django与讯飞开放平台的ACGN文化交流平台源码
- 中国象棋(自行初步设计)
- 微信小程序实现找不同游戏
- 100_Numpy_exercises.ipynb
- 2023-04-06-项目笔记 - 第三百二十六阶段 - 4.4.2.324全局变量的作用域-324 -2025.11.23
- 一个简单的模板,开始用 Python 编写你自己的个性化 Discord 机器人.zip
- TP-Link 智能家居产品的 Python API.zip
- 一个需要十一个字才能i激活的神奇代码-OLP
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功