diff --git a/.github/workflows/dockerhub-description.yaml b/.github/workflows/dockerhub-description.yaml new file mode 100644 index 0000000..fa3ea16 --- /dev/null +++ b/.github/workflows/dockerhub-description.yaml @@ -0,0 +1,22 @@ +name: Update Docker Hub Description +on: + push: + branches: + - main + paths: + - README.md + - .github/workflows/dockerhub-description.yaml +jobs: + dockerHubDescription: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Docker Hub Description + uses: peter-evans/dockerhub-description@v4 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PAT }} + repository: peterevans/dockerhub-description + short-description: ${{ github.event.repository.description }} + enable-url-completion: true diff --git a/Dockerfile b/Dockerfile index 6ec0597..f90d867 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,27 @@ -FROM python:3-alpine +# builder stage ----------------------------------------------------------------------------------- +FROM python:3-slim AS builder -RUN python -m venv /usr/src/app -# Enable venv -ENV PATH="/usr/src/app/venv/bin:$PATH" +RUN apt-get update && \ + apt-get install --no-install-recommends -y build-essential && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* RUN python3 -m ensurepip - -# Upgrade pip and setuptools RUN pip3 install --upgrade pip setuptools WORKDIR /usr/src/app -COPY requirements.txt ./ -RUN pip3 install --no-cache-dir --upgrade -r requirements.txt +COPY requirements.txt . +RUN python3 -m venv .venv +RUN .venv/bin/pip3 install --no-cache-dir --upgrade -r requirements.txt + +# production stage -------------------------------------------------------------------------------- +FROM python:3-slim AS production + +WORKDIR /usr/src/app COPY . . +COPY --from=builder /usr/src/app/.venv .venv RUN mkdir /config RUN touch /config/config.yaml @@ -22,12 +29,16 @@ RUN touch /config/config.yaml ARG USER_ID=1000 ARG GROUP_ID=1000 -RUN addgroup -g $GROUP_ID appuser && \ - adduser -u $USER_ID -G appuser --disabled-password --gecos "" appuser +RUN addgroup --gid $GROUP_ID appuser && \ + adduser --uid $USER_ID --gid $GROUP_ID --disabled-password --gecos "" appuser + +RUN chown -R appuser:appuser . RUN chown appuser:appuser /config/* RUN chmod 0664 /config/* USER appuser -ENTRYPOINT [ "python", "-u", "./app.py" ] +ENV PATH="/usr/src/app/.venv/bin:$PATH" + +ENTRYPOINT [ "python3", "./app.py" ] CMD [ "-c", "/config" ] diff --git a/docker-compose.yaml b/docker-compose.yaml index 4a60b45..05f44df 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,6 +1,8 @@ services: amcrest2mqtt: image: weirdtangent/amcrest2mqtt:latest + context: . + target: production container_name: amcrest2mqtt restart: unless-stopped volumes: