NomadNet/Dockerfile

25 lines
714 B
Docker
Raw Normal View History

Automated docker build for nomadnet daemon 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 #
2022-04-26 18:50:22 -04:00
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"]