Search code examples
gitdockergogs

Adding a Local GIT Repository to a Gogs Docker Container


I've installed Gogs using Docker. Subsequently I have created a local repository like this (In reality the repository has multiple branches, etc. but I'm just keeping this example simple):

mkdir repository
cd repository
git init
touch README.md
git add README.md
git commmit -m "How do I get this into Gogs"

How do I now migrate / push this to Gogs?


Solution

  • To push changesets to gogs, you'll need to create a repo on gogs then add a remote that uses the port exposed when the container was started. If you're unsure, run the following and note the HostPort entries. Assuming the container is named gogs:

    docker inspect  --format "{{json .HostConfig.PortBindings}}" gogs
    

    The following are steps to set up an ssh remote origin. Add your public key using the gogs web ui accessed by the HostPort entry for 3000/tcp. If you followed the gogs docker instructions, this will likely be: http://localhost:10080 If gogs is not running locally, replace localhost with the gogs hostname.

    Add the following host entry to ~/.ssh/config to more easily specify an alternate ssh port:

    Host gogs
        # if gogs is not running locally, add the remote hostname here
        Hostname localhost
        User git
        # the following should match what is listed for HostPort 22/tcp
        port 10022
    

    Test the ssh host entry with ssh gogs. If it works you should see:

    PTY allocation request failed on channel 0
    Hi there, You've successfully authenticated, but Gogs does not provide shell access.
    If this is unexpected, please log in with password and setup Gogs under another user.
    Connection to localhost closed.
    

    Add the following as your remote:

    git remote add origin gogs:yourusername/your-repo.git
    

    Note that you're replacing git@localhost with the gogs ssh host entry.

    You should now be able to push to your gogs repo.