initial commit
This commit is contained in:
56
Dockerfile
Normal file
56
Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
```dockerfile
|
||||
# Use a stable Python base image
|
||||
FROM python:3.11-slim
|
||||
|
||||
# Build arguments for host user mapping
|
||||
ARG USER_ID=1000
|
||||
ARG GROUP_ID=1000
|
||||
|
||||
# Create non-root user
|
||||
RUN groupadd -g ${GROUP_ID} infoscreen_taa \
|
||||
&& useradd -u ${USER_ID} -g ${GROUP_ID} --shell /bin/bash --create-home infoscreen_taa
|
||||
|
||||
# Ensure user exists
|
||||
RUN getent passwd infoscreen_taa
|
||||
|
||||
# Install locale dependencies and generate UTF-8 locale
|
||||
RUN apt-get update && apt-get install -y locales \
|
||||
&& sed -i 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen \
|
||||
&& locale-gen
|
||||
|
||||
# Set environment variables for locale
|
||||
ENV LANG=de_DE.UTF-8 \
|
||||
LANGUAGE=de_DE:de \
|
||||
LC_ALL=de_DE.UTF-8
|
||||
|
||||
# Enable Dash debug during development
|
||||
ENV DASH_DEBUG_MODE=True
|
||||
|
||||
# Working directory inside container
|
||||
WORKDIR /app # entspricht mount in devcontainer.json
|
||||
|
||||
# Copy only requirements first for efficient caching
|
||||
COPY server/requirements-dev.txt ./
|
||||
|
||||
# Install dev dependencies under the non-root user
|
||||
USER infoscreen_taa
|
||||
RUN pip install --upgrade pip \
|
||||
&& pip install --user -r requirements-dev.txt
|
||||
|
||||
# Switch back to root to copy source files and fix permissions
|
||||
USER root
|
||||
|
||||
# Copy the server application code into /app
|
||||
COPY server/ /app
|
||||
RUN chown -R infoscreen_taa:infoscreen_taa /app
|
||||
|
||||
# Create config directory under the non-root user's home
|
||||
RUN mkdir -p /home/infoscreen_taa/.config/Infoscreen-Server \
|
||||
&& chown -R infoscreen_taa:infoscreen_taa /home/infoscreen_taa/.config/Infoscreen-Server
|
||||
|
||||
# Expose development ports
|
||||
EXPOSE 8000 8050
|
||||
|
||||
# Use a long-running process so the container stays alive
|
||||
CMD ["tail", "-f", "/dev/null"]
|
||||
```
|
||||
Reference in New Issue
Block a user