Public | Automated Build

Last pushed: a year ago
Short Description
Self hosted git
Full Description

Docker for Gogs

Gogs (Go Git Service) is a painless self-hosted Git service.


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.

Note: It is important to map the Gogs 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 Gogs 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:

|-- git
|   |-- gogs-repositories
|-- ssh
|   |-- # ssh public/private keys for Gogs
|-- gogs
    |-- conf
    |-- data
    |-- log



Most of 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 already made a symbolic link for you.
  • Run User: keep it as default value git because already setup a user with name git.
  • Domain: fill in with Docker container IP (e.g. 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 10080:3000, but you still use 3000 for this value.
  • Application URL: Use combination of Domain and exposed HTTP Port values (e.g.

Full documentation of application settings can be found here.

Container options

This container have some options available via environment variables, these options are opt-in features that can help the administration of this container:

    • <u>Possible value:</u>
      true, false, 1, 0
    • <u>Default:</u>
    • <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)
    • <u>Possible value:</u>
      true, false, 1, 0
    • <u>Default:</u>
    • <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/.
Docker Pull Command
Source Repository