diff --git a/.github/workflows/manual_build.yml b/.github/workflows/manual_build.yml index 4dad734..f3e49cc 100644 --- a/.github/workflows/manual_build.yml +++ b/.github/workflows/manual_build.yml @@ -43,8 +43,9 @@ jobs: with: context: "{{defaultContext}}:docker" platforms: linux/amd64,linux/arm64 - file: ./Dockerfile-dev + file: ./Dockerfile build-args: | + INSTALL_TYPE=github BRANCH=${{ steps.extract_branch.outputs.branch }} BUILDX_QEMU_ENV=true push: true diff --git a/.github/workflows/master-build.yml b/.github/workflows/master-build.yml index 060b176..3f34ef8 100644 --- a/.github/workflows/master-build.yml +++ b/.github/workflows/master-build.yml @@ -53,8 +53,9 @@ jobs: with: context: "{{defaultContext}}:docker" platforms: linux/amd64,linux/arm64 - file: ./Dockerfile-dev + file: ./Dockerfile build-args: | + INSTALL_TYPE=github BRANCH=${{ steps.branch-name.outputs.current_branch }} BUILDX_QEMU_ENV=true push: true diff --git a/docker/Dockerfile b/docker/Dockerfile index 210e7b7..06edd64 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,10 +1,18 @@ 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 @@ -35,16 +43,22 @@ FROM build as final WORKDIR /app RUN pip3 install -U pip -RUN pip3 install aprsd==$APRSD_PIP_VERSION -RUN pip install gevent uwsgi -RUN which aprsd RUN mkdir /config RUN chown -R appuser:appgroup /app RUN chown -R appuser:appgroup /config USER appuser -RUN echo "PATH=\$PATH:/usr/games" >> /app/.bashrc +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 diff --git a/docker/Dockerfile-dev b/docker/Dockerfile-dev deleted file mode 100644 index 04aa66a..0000000 --- a/docker/Dockerfile-dev +++ /dev/null @@ -1,60 +0,0 @@ -FROM python:3.11-slim as build - -ARG BRANCH=master -ARG BUILDX_QEMU_ENV -ENV APRSD_BRANCH=${BRANCH:-master} - -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 fortune \ - python3-dev libssl-dev libxml2-dev libxslt-dev telnet sudo \ - # Install dependencies - # Clean up - && apt-get autoremove -y \ - && apt-get clean -y - - -### Final stage -FROM build as final -WORKDIR /app - -RUN git clone -b $APRSD_BRANCH https://github.com/craigerl/aprsd -RUN pip install -U pip -RUN cd aprsd && pip install --no-cache-dir . -RUN pip install gevent uwsgi==2.0.24 -RUN which aprsd -RUN mkdir /config -RUN chown -R appuser:appgroup /app -RUN chown -R appuser:appgroup /config -USER appuser -RUN echo "PATH=\$PATH:/usr/games" >> /app/.bashrc -RUN which aprsd -RUN aprsd sample-config > /config/aprsd.conf - -ADD bin/setup.sh /app -ADD bin/admin.sh /app - -EXPOSE 8000 -EXPOSE 8001 - -VOLUME ["/config"] -# CMD ["gunicorn", "aprsd.wsgi:app", "--host", "0.0.0.0", "--port", "8000"] -ENTRYPOINT ["/app/setup.sh"] -CMD ["server"] - -# Set the user to run the application -USER appuser diff --git a/docker/build.sh b/docker/build.sh index 0a8776c..cf0677d 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -90,7 +90,8 @@ then # Use this script to locally build the docker image docker buildx build --push --platform $PLATFORMS \ -t hemna6969/aprsd:$TAG \ - -f Dockerfile-dev --build-arg branch=$BRANCH \ + --build-arg INSTALL_TYPE=github \ + --build-arg branch=$BRANCH \ --build-arg BUILDX_QEMU_ENV=true \ --no-cache . else @@ -101,6 +102,5 @@ else --build-arg BUILDX_QEMU_ENV=true \ -t hemna6969/aprsd:$VERSION \ -t hemna6969/aprsd:$TAG \ - -t hemna6969/aprsd:latest \ - -f Dockerfile . + -t hemna6969/aprsd:latest . fi