Commit
·
39962fc
1
Parent(s):
6a99b17
Fix Dockerfile user creation and permissions
Browse files- Dockerfile +18 -9
Dockerfile
CHANGED
|
@@ -2,24 +2,33 @@ FROM python:3.11-slim
|
|
| 2 |
|
| 3 |
WORKDIR /app
|
| 4 |
|
| 5 |
-
# Install Java
|
| 6 |
RUN apt-get update && \
|
| 7 |
-
apt-get install -y openjdk-17-jdk-headless && \
|
| 8 |
rm -rf /var/lib/apt/lists/*
|
| 9 |
|
| 10 |
-
# Copy files
|
| 11 |
COPY . .
|
| 12 |
|
| 13 |
-
# Install
|
| 14 |
-
|
|
|
|
|
|
|
| 15 |
|
| 16 |
-
#
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
USER user
|
| 19 |
ENV HOME=/home/user \
|
| 20 |
PATH=/home/user/.local/bin:$PATH
|
| 21 |
|
|
|
|
| 22 |
EXPOSE 7860
|
| 23 |
-
|
| 24 |
-
# Run Streamlit on port 7860
|
| 25 |
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]
|
|
|
|
| 2 |
|
| 3 |
WORKDIR /app
|
| 4 |
|
| 5 |
+
# 1. Install System Dependencies (Java for LanguageTool, Build tools for safety)
|
| 6 |
RUN apt-get update && \
|
| 7 |
+
apt-get install -y openjdk-17-jdk-headless build-essential git && \
|
| 8 |
rm -rf /var/lib/apt/lists/*
|
| 9 |
|
| 10 |
+
# 2. Copy files
|
| 11 |
COPY . .
|
| 12 |
|
| 13 |
+
# 3. Install Python libraries
|
| 14 |
+
# We add --verbose to see errors if pip fails
|
| 15 |
+
RUN pip install --no-cache-dir --upgrade pip && \
|
| 16 |
+
pip install --no-cache-dir -r requirements.txt
|
| 17 |
|
| 18 |
+
# 4. Create User (Robust Version)
|
| 19 |
+
# Checks if user exists; if not, creates it. Handles existing ID 1000.
|
| 20 |
+
RUN id -u user &>/dev/null || useradd -m -u 1000 user
|
| 21 |
+
|
| 22 |
+
# 5. Fix Permissions
|
| 23 |
+
# Ensure the new user owns the app directory and home directory
|
| 24 |
+
RUN chown -R user:user /app && \
|
| 25 |
+
chown -R user:user /home/user
|
| 26 |
+
|
| 27 |
+
# 6. Switch to User
|
| 28 |
USER user
|
| 29 |
ENV HOME=/home/user \
|
| 30 |
PATH=/home/user/.local/bin:$PATH
|
| 31 |
|
| 32 |
+
# 7. Run
|
| 33 |
EXPOSE 7860
|
|
|
|
|
|
|
| 34 |
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]
|