mirror of
https://github.com/craigerl/aprsd.git
synced 2024-11-18 06:11:49 -05:00
Hemna
afeb11a085
This patch reworks the main Dockerfile to do builds for both the pypi upstream release of aprsd as well as the github repo branch of aprsd for development. This eliminates the need for Dockerfile-dev. This patch also installs aprsd as a user in the container image instead of as root.
78 lines
2.1 KiB
Docker
78 lines
2.1 KiB
Docker
FROM python:3.11-slim as build
|
|
|
|
ARG VERSION=3.4.0
|
|
# pass this in as 'dev' if you want to install from github repo vs pypi
|
|
ARG INSTALL_TYPE=pypi
|
|
|
|
ARG BRANCH=master
|
|
ARG BUILDX_QEMU_ENV
|
|
|
|
ENV APRSD_BRANCH=${BRANCH:-master}
|
|
ENV TZ=${TZ:-US/Eastern}
|
|
ENV LC_ALL=C.UTF-8
|
|
ENV LANG=C.UTF-8
|
|
ENV APRSD_PIP_VERSION=${VERSION}
|
|
ENV PATH="${PATH}:/app/.local/bin"
|
|
|
|
ENV PIP_DEFAULT_TIMEOUT=100 \
|
|
# Allow statements and log messages to immediately appear
|
|
PYTHONUNBUFFERED=1 \
|
|
# disable a pip version check to reduce run-time & log-spam
|
|
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
|
# cache is useless in docker image, so disable to reduce image size
|
|
PIP_NO_CACHE_DIR=1
|
|
|
|
|
|
RUN set -ex \
|
|
# Create a non-root user
|
|
&& addgroup --system --gid 1001 appgroup \
|
|
&& useradd --uid 1001 --gid 1001 -s /usr/bin/bash -m -d /app appuser \
|
|
# Upgrade the package index and install security upgrades
|
|
&& apt-get update \
|
|
&& apt-get upgrade -y \
|
|
&& apt-get install -y git build-essential curl libffi-dev \
|
|
python3-dev libssl-dev libxml2-dev libxslt-dev telnet sudo fortune \
|
|
# Install dependencies
|
|
# Clean up
|
|
&& apt-get autoremove -y \
|
|
&& apt-get clean -y
|
|
|
|
|
|
### Final stage
|
|
FROM build as final
|
|
WORKDIR /app
|
|
|
|
RUN pip3 install -U pip
|
|
RUN mkdir /config
|
|
RUN chown -R appuser:appgroup /app
|
|
RUN chown -R appuser:appgroup /config
|
|
USER appuser
|
|
RUN if [ "$INSTALL_TYPE" = "pypi" ]; then \
|
|
pip3 install aprsd==$APRSD_PIP_VERSION; \
|
|
elif [ "$INSTALL_TYPE" = "github" ]; then \
|
|
git clone -b $APRSD_BRANCH https://github.com/craigerl/aprsd; \
|
|
cd /app/aprsd && pip install -e .; \
|
|
ls -al /app/.local/lib/python3.11/site-packages/aprsd*; \
|
|
fi
|
|
RUN pip install gevent uwsgi
|
|
RUN echo "PATH=\$PATH:/usr/games:/app/.local/bin" >> /app/.bashrc
|
|
RUN which aprsd
|
|
RUN aprsd sample-config > /config/aprsd.conf
|
|
RUN aprsd --version
|
|
|
|
ADD bin/setup.sh /app
|
|
ADD bin/admin.sh /app
|
|
|
|
# For the web admin interface
|
|
EXPOSE 8001
|
|
|
|
VOLUME ["/config"]
|
|
ENTRYPOINT ["/app/setup.sh"]
|
|
CMD ["server"]
|
|
|
|
# Set the user to run the application
|
|
USER appuser
|
|
|
|
HEALTHCHECK --interval=1m --timeout=12s --start-period=30s \
|
|
CMD aprsd healthcheck --config /config/aprsd.conf --loglevel DEBUG
|