forgejo/docker
无闻 e5310cdbc1 Merge pull request #1731 from ogarcia/develop
Several bugfixes in Docker build
2015-10-02 15:59:10 -04:00
..
s6 Several bugfixes in Docker build 2015-10-02 21:18:13 +02:00
build.sh Several bugfixes in Docker build 2015-10-02 21:18:13 +02:00
README.md Update Docker README for #1708 2015-10-02 15:44:59 -04:00
sshd_config
start.sh

Docker for Gogs

Visit Docker Hub see all available 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.

# 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 10080:3000 -v /var/gogs:/data gogs/gogs

# Use `docker start` if you have stopped it.
$ docker start gogs 

Files will be store in local path /var/gogs in my case.

Directory /var/gogs keeps Git repoistories and Gogs data:

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

Volume with data container

If you're more comfortable with mounting data to a data container, the commands you execute at the first time will look like as follows:

# Create data container
docker run --name=gogs-data --entrypoint /bin/true gogs/gogs
# Use `docker run` for the first time.
docker run --name=gogs --volumes-from gogs-data -p 10022:22 -p 10080:3000 gogs/gogs

Settings

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 start.sh already made a symbolic link for you.
  • Run User: keep it as default value git because start.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.
  • 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. http://192.168.99.100:10080/).

Full documentation of settings can be found here.

Upgrade

Make sure you have volumed data to somewhere outside Docker container

Steps to upgrade Gogs with Docker:

  • docker pull gogs/gogs
  • docker stop gogs
  • docker rm gogs
  • Finally, create container as the first time and don't forget to do same volume and port mapping.