You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
4.7 KiB

  1. # Docker for Gogs
  2. Visit [Docker Hub](https://hub.docker.com/r/gogs/) see all available images and tags.
  3. ## Usage
  4. 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.
  5. ```
  6. # Pull image from Docker Hub.
  7. $ docker pull gogs/gogs
  8. # Create local directory for volume.
  9. $ mkdir -p /var/gogs
  10. # Use `docker run` for the first time.
  11. $ docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
  12. # Use `docker start` if you have stopped it.
  13. $ docker start gogs
  14. ```
  15. 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.
  16. Files will be store in local path `/var/gogs` in my case.
  17. Directory `/var/gogs` keeps Git repositories and Gogs data:
  18. /var/gogs
  19. |-- git
  20. | |-- gogs-repositories
  21. |-- ssh
  22. | |-- # ssh public/private keys for Gogs
  23. |-- gogs
  24. |-- conf
  25. |-- data
  26. |-- log
  27. ### Volume with data container
  28. 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:
  29. ```
  30. # Create data container
  31. docker run --name=gogs-data --entrypoint /bin/true gogs/gogs
  32. # Use `docker run` for the first time.
  33. docker run --name=gogs --volumes-from gogs-data -p 10022:22 -p 10080:3000 gogs/gogs
  34. ```
  35. #### Using Docker 1.9 Volume command
  36. ```
  37. # Create docker volume.
  38. $ docker volume create --name gogs-data
  39. # Use `docker run` for the first time.
  40. $ docker run --name=gogs -p 10022:22 -p 10080:3000 -v gogs-data:/data gogs/gogs
  41. ```
  42. ## Settings
  43. ### Application
  44. Most of settings are obvious and easy to understand, but there are some settings can be confusing by running Gogs inside Docker:
  45. - **Repository Root Path**: keep it as default value `/home/git/gogs-repositories` because `start.sh` already made a symbolic link for you.
  46. - **Run User**: keep it as default value `git` because `start.sh` already setup a user with name `git`.
  47. - **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.
  48. - **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**
  49. - **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.
  50. - **Application URL**: Use combination of **Domain** and **exposed HTTP Port** values (e.g. `http://192.168.99.100:10080/`).
  51. Full documentation of application settings can be found [here](https://gogs.io/docs/advanced/configuration_cheat_sheet.html).
  52. ### Container options
  53. This container have some options available via environment variables, these options are opt-in features that can help the administration of this container:
  54. - **SOCAT_LINK**:
  55. - <u>Possible value:</u>
  56. `true`, `false`, `1`, `0`
  57. - <u>Default:</u>
  58. `true`
  59. - <u>Action:</u>
  60. Bind linked docker container to localhost socket using socat.
  61. Any exported port from a linked container will be binded to the matching port on localhost.
  62. - <u>Disclaimer:</u>
  63. 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`)
  64. - **RUN_CROND**:
  65. - <u>Possible value:</u>
  66. `true`, `false`, `1`, `0`
  67. - <u>Default:</u>
  68. `false`
  69. - <u>Action:</u>
  70. 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/`.
  71. ## Upgrade
  72. :exclamation::exclamation::exclamation:<span style="color: red">**Make sure you have volumed data to somewhere outside Docker container**</span>:exclamation::exclamation::exclamation:
  73. Steps to upgrade Gogs with Docker:
  74. - `docker pull gogs/gogs`
  75. - `docker stop gogs`
  76. - `docker rm gogs`
  77. - Finally, create container as the first time and don't forget to do same volume and port mapping.
  78. ## Known Issues
  79. - The docker container can not currently be build on Raspberry 1 (armv6l) as our base image `alpine` does not have a `go` package available for this platform.