mirror of
https://github.com/markqvist/NomadNet.git
synced 2025-12-16 22:34:27 +01:00
Uses a Github Action (`.github/workflows/publish-container.yml`) to create a
docker container image (from `Dockerfile`) that represents an extremely minimal
python installation with a virtualenv holding all requirements necessary to
execute `nomadnet`.
New docker images are created on pushes to `master` or pushes to tags
matching `*.*.*` (ie. version tags) and are retrievable with those tags.
Examples:
```sh
$ docker pull ghcr.io/markqvist/nomadnet:master
# Print docker labels, to demonstrate the image has been retrieved
$ docker inspect -f '{{json .Config.Labels}}' ghcr.io/markqvist/nomadnet:master | jq
{
"org.opencontainers.image.created": "2022-04-27T06:01:55.894Z",
"org.opencontainers.image.description": "Communicate Freely",
"org.opencontainers.image.licenses": "GPL-3.0",
"org.opencontainers.image.revision": "59cffc4a9de0f276d2cc87537ff1316aed5f16dd",
"org.opencontainers.image.source": "https://github.com/markqvist/NomadNet",
"org.opencontainers.image.title": "NomadNet",
"org.opencontainers.image.url": "https://github.com/markqvist/NomadNet",
"org.opencontainers.image.version": "master"
}
# Run nomadnet interactively without installing it (with default config)
$ docker run -it ghcr.io/markqvist/nomadnet:master
# Run nomadnet as a daemon, using config stored on the host machine in specific directories
$ docker run -d -v /local/path/nomadnetconfig/:/root/.nomadnetwork/ -v /local/path/reticulumconfig/:/root/.reticulum/:rw ghcr.io/markqvist/nomadnet:master
```
# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
#
# Date: Tue Apr 26 23:50:22 2022 +0100
#
# On branch dockerfile
# Changes to be committed:
# new file: .dockerignore
# new file: .github/workflows/publish-container.yml
# new file: Dockerfile
# modified: README.md
#
# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
#
# Date: Tue Apr 26 23:50:22 2022 +0100
#
# On branch dockerfile
# Changes to be committed:
# new file: .dockerignore
# new file: .github/workflows/publish-container.yml
# new file: Dockerfile
# modified: README.md
#
# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
#
# Date: Tue Apr 26 23:50:22 2022 +0100
#
# On branch dockerfile
# Changes to be committed:
# new file: .dockerignore
# new file: .github/workflows/publish-container.yml
# new file: Dockerfile
# modified: README.md
#
25 lines
714 B
Docker
25 lines
714 B
Docker
FROM python:3.11-rc-alpine3.14 as build
|
|
|
|
RUN apk add --no-cache build-base linux-headers libffi-dev cargo
|
|
|
|
# Create a virtualenv that we'll copy to the published image
|
|
RUN python -m venv /opt/venv
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
RUN pip3 install setuptools-rust pyopenssl cryptography
|
|
|
|
COPY . /app/
|
|
RUN cd /app/ && python3 setup.py install
|
|
|
|
# Use multi-stage build, as we don't need rust compilation on the final image
|
|
FROM python:3.11-rc-alpine3.14
|
|
|
|
LABEL org.opencontainers.image.documentation="https://github.com/jphastings/NomadNet#using-docker--running-a-daemon"
|
|
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
COPY --from=build /opt/venv /opt/venv
|
|
|
|
VOLUME /root/.reticulum
|
|
VOLUME /root/.nomadnetwork
|
|
|
|
ENTRYPOINT ["nomadnet"]
|