forked from mirror/gitea
e63e0b3105
- VOLUME for ‘/data’ - Usage of S6 as PID 1 Process - Usage of ‘socat’ so linked container (like databases) are binded to localhost - OpenSSH, Socat Link and Gogs are supervised using S6 - Size of container reduced to ~75Mo |
||
---|---|---|
.. | ||
s6 | ||
build.sh | ||
README.md | ||
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
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
becausestart.sh
already made a symbolic link for you. - Run User: keep it as default value
git
becausestart.sh
already setup a user with namegit
. - 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 by10022:22
, then use10022
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 by10080:3000
, but you still use3000
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.
Troubleshooting
If you see the following error:
checkVersion()] [E] Binary and template file version does not match
Run rm -fr /var/gogs/gogs/templates/
should fix this it. Just remember to backup templates file if you have made modifications youself.