Added PUID and PGID environment variable support
This commit is contained in:
20
Dockerfile
20
Dockerfile
@@ -1,10 +1,11 @@
|
|||||||
FROM python:3.11-alpine as python-builder
|
FROM python:3.11-alpine as python-builder
|
||||||
|
|
||||||
RUN apk add --no-cache g++ python3-dev libpq-dev libstdc++
|
RUN apk add --no-cache g++ python3-dev libpq-dev libstdc++ shadow
|
||||||
|
|
||||||
# Add local user so we don't run as root
|
# Add local user so we don't run as root
|
||||||
RUN adduser -D app
|
RUN groupmod -g 1000 users \
|
||||||
USER app
|
&& useradd -u 911 -U app \
|
||||||
|
&& usermod -G users app
|
||||||
|
|
||||||
ENV PATH="/home/app/.local/bin:${PATH}"
|
ENV PATH="/home/app/.local/bin:${PATH}"
|
||||||
|
|
||||||
@@ -30,21 +31,24 @@ LABEL org.opencontainers.image.source=https://github.com/Donkie/Spoolman
|
|||||||
LABEL org.opencontainers.image.description="Keep track of your inventory of 3D-printer filament spools."
|
LABEL org.opencontainers.image.description="Keep track of your inventory of 3D-printer filament spools."
|
||||||
LABEL org.opencontainers.image.licenses=MIT
|
LABEL org.opencontainers.image.licenses=MIT
|
||||||
|
|
||||||
RUN apk add --no-cache libstdc++
|
RUN apk add --no-cache libstdc++ su-exec shadow
|
||||||
|
|
||||||
# Add local user so we don't run as root
|
# Add local user so we don't run as root
|
||||||
RUN adduser -D app \
|
RUN groupmod -g 1000 users \
|
||||||
|
&& useradd -u 1000 -U app \
|
||||||
|
&& usermod -G users app \
|
||||||
&& mkdir -p /home/app/.local/share/spoolman \
|
&& mkdir -p /home/app/.local/share/spoolman \
|
||||||
&& chown -R app:app /home/app/.local/share/spoolman
|
&& chown -R app:app /home/app/.local/share/spoolman
|
||||||
|
|
||||||
USER app
|
|
||||||
|
|
||||||
# Copy built client
|
# Copy built client
|
||||||
COPY --chown=app:app ./client/dist /home/app/spoolman/client/dist
|
COPY --chown=app:app ./client/dist /home/app/spoolman/client/dist
|
||||||
|
|
||||||
# Copy built app
|
# Copy built app
|
||||||
COPY --chown=app:app --from=python-builder /home/app/spoolman /home/app/spoolman
|
COPY --chown=app:app --from=python-builder /home/app/spoolman /home/app/spoolman
|
||||||
|
|
||||||
|
COPY entrypoint.sh /home/app/spoolman/entrypoint.sh
|
||||||
|
RUN chmod +x /home/app/spoolman/entrypoint.sh
|
||||||
|
|
||||||
WORKDIR /home/app/spoolman
|
WORKDIR /home/app/spoolman
|
||||||
|
|
||||||
ENV PATH="/home/app/spoolman/.venv/bin:${PATH}"
|
ENV PATH="/home/app/spoolman/.venv/bin:${PATH}"
|
||||||
@@ -57,5 +61,5 @@ ENV BUILD_DATE=${BUILD_DATE}
|
|||||||
|
|
||||||
# Run command
|
# Run command
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
ENTRYPOINT ["uvicorn", "spoolman.main:app"]
|
ENTRYPOINT ["/home/app/spoolman/entrypoint.sh"]
|
||||||
CMD ["--host", "0.0.0.0", "--port", "8000"]
|
CMD ["--host", "0.0.0.0", "--port", "8000"]
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ If you want to connect with an external database instead, specify the `SPOOLMAN_
|
|||||||
| SPOOLMAN_DB_QUERY | Query parameters for the database connection, e.g. set to `unix_socket=/path/to/mysql.sock` to connect using a MySQL socket. |
|
| SPOOLMAN_DB_QUERY | Query parameters for the database connection, e.g. set to `unix_socket=/path/to/mysql.sock` to connect using a MySQL socket. |
|
||||||
| SPOOLMAN_LOGGING_LEVEL | Logging level, any of: `CRITICAL`, `ERROR`, `WARNING`, `INFO`, `DEBUG`, defaults to `INFO`. |
|
| SPOOLMAN_LOGGING_LEVEL | Logging level, any of: `CRITICAL`, `ERROR`, `WARNING`, `INFO`, `DEBUG`, defaults to `INFO`. |
|
||||||
| SPOOLMAN_AUTOMATIC_BACKUP | Automatic nightly DB backups for SQLite databases. Enabled by default, set to `FALSE` to disable. |
|
| SPOOLMAN_AUTOMATIC_BACKUP | Automatic nightly DB backups for SQLite databases. Enabled by default, set to `FALSE` to disable. |
|
||||||
|
| PUID | (*docker only*) Set the UID of the user in the docker container. Default is 1000. |
|
||||||
|
| PGID | (*docker only*) Set the GID of the user in the docker container. Default is 1000. |
|
||||||
|
|
||||||
## Frequently Asked Questions (FAQs)
|
## Frequently Asked Questions (FAQs)
|
||||||
### QR Code Does not work on HTTP / The page is not served over HTTPS
|
### QR Code Does not work on HTTP / The page is not served over HTTPS
|
||||||
|
|||||||
15
entrypoint.sh
Normal file
15
entrypoint.sh
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PUID=${PUID:-1000}
|
||||||
|
PGID=${PGID:-1000}
|
||||||
|
|
||||||
|
groupmod -o -g "$PGID" app
|
||||||
|
usermod -o -u "$PUID" app
|
||||||
|
|
||||||
|
echo User UID: $(id -u app)
|
||||||
|
echo User GID: $(id -g app)
|
||||||
|
|
||||||
|
echo "Starting uvicorn..."
|
||||||
|
|
||||||
|
# Execute the uvicorn command with any additional arguments
|
||||||
|
exec su-exec "app" uvicorn spoolman.main:app "$@"
|
||||||
Reference in New Issue
Block a user