ad5e0b833c
- Now using a setup script before starting the app. The separation of the run script and the setup script will make service initialisation a little bit clearer - Now calling start.sh script as ENTRYPOINT and S6 as CMD. This way when running the container with just a shell script, the start.sh script will be launched before, making debugging easier - Added note about `.dockerignore` ignored during Docker Hub Automated Build
3.0 KiB
3.0 KiB
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
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.
Known Issues
- Use ctrl+c when clone through SSH makes Docker exit unexpectedly
.dockerignore
seems to be ignored during Docker Hub Automated build