Skip to content

Commit

Permalink
Remove user from Dockerfile
Browse files Browse the repository at this point in the history
  • Loading branch information
jhalter committed Jul 7, 2024
1 parent 6dabc6b commit d3f75b4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 16 deletions.
11 changes: 2 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,11 @@ COPY . .

RUN CGO_ENABLED=0 go build -o /app/server cmd/mobius-hotline-server/main.go && chmod a+x /app/server

FROM debian:stable-slim

# Change these as you see fit. This makes bind mounting easier so you don't have to edit bind mounted config files as root.
ARG USERNAME=mobius
ARG UID=1001
ARG GUID=1001
FROM scratch

COPY --from=builder /app/server /app/server
COPY --from=builder /app/cmd/mobius-hotline-server/mobius/config /usr/local/var/mobius/config
RUN useradd -d /app -u ${UID} ${USERNAME}
RUN chown -R ${USERNAME}:${USERNAME} /app

EXPOSE 5500 5501

USER ${USERNAME}
ENTRYPOINT ["/app/server"]
34 changes: 27 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,37 @@ The goal of the Mobius client is to make it fun and easy to connect to multiple

### Docker

If you run Docker, you can quickly try out the Mobius server with the official image from Docker hub:
### Docker

To quickly run a Hotline server with ports forwarded from the host OS to the container, run:

docker run --rm -p 5500:5500 -p 5501:5501 ghcr.io/jhalter/mobius:latest

docker run --pull=always --rm -p 5500:5500 -p 5501:5501 jhalter/mobius-hotline-server:latest
You can now connect to localhost:5500 with your favorite Hotline client and play around, but all changes will be lost on container restart.

This will start the Mobius server with the Hotline ports 5500 and 5501 exposed on localhost using a default configuration from the image.
To serve files from the host OS and persist configuration changes, you'll want to set up a [bind mount](https://docs.docker.com/storage/bind-mounts/) that maps a directory from the host into the container.

To edit the configuration and serve files from your host OS, include the `-v` option to setup a Docker [bind mount](https://docs.docker.com/storage/bind-mounts/):
To do this, create a directory in a location of your choice on the host OS. For clarity, we'll assign the path to the `HLFILES` environment variable and re-use it:

export HLFILES=/Users/foo/HotlineFiles #
docker run --rm -p 5500:5500 -p 5501:5501 -v $HLFILES:/usr/local/var/mobius/config jhalter/mobius-hotline-server:latest -init
```
export HLFILES=/home/myuser/hotline-files
mdkir $HLFILES
sudo docker run \
--pull=always \
--rm \
-p 5500:5500 \
-p 5501:5501 \
-v $HLFILES:/usr/local/var/mobius/config \
ghcr.io/jhalter/mobius:latest \
-init
```

It's a good security practice to run your server as a non-root user, which also happens to make editing the configuration files easier from the host OS.

To do this, add the `--user` flag to the docker run arguments with a user ID and group ID of a user on the host OS.

`--user 1001:1001`

You'll now find a configuration directory on your host OS populated with a default configuration:

Expand All @@ -44,7 +65,6 @@ drwxr-xr-x 4 jhalter staff 128 Jun 12 17:11 Users

Edit `config.yaml` to get started personalizing your server.


### Mac OS

For Mac OS the easiest path to installation is through Homebrew.
Expand Down

0 comments on commit d3f75b4

Please sign in to comment.