synalinks-noteboooks / Dockerfile
YoanSallami
Add notebooks
fe643f6
FROM python:3.12
COPY --from=ghcr.io/astral-sh/uv:0.5.1 /uv /bin/uv
RUN set -ex \
&& chmod 755 /bin/uv \
&& useradd --create-home --shell /bin/bash --uid 1000 user
# Set environment variables
ENV VIRTUAL_ENV=/opt/venv \
PATH="/opt/venv/bin:/home/user/.local/bin:$PATH" \
HOME=/home/user
# Install graphviz for dot visualization
RUN apt update && apt install -y graphviz
# Install dependencies
COPY --chown=user:user ./requirements.txt requirements.txt
RUN uv venv $VIRTUAL_ENV \
&& uv pip install --no-cache-dir -r requirements.txt \
&& chown -R user:user $VIRTUAL_ENV
# Create directories and set permissions
RUN mkdir -p $HOME/.cache $HOME/.config /data \
&& chown -R user:user $HOME /data \
&& chmod -R 755 $HOME /data \
&& chown -R user:user /opt/venv
RUN --mount=type=secret,id=MARIMO_PASSWORD \
cat /run/secrets/MARIMO_PASSWORD > $HOME/.marimo_password \
&& chmod 600 $HOME/.marimo_password \
&& chown user:user $HOME/.marimo_password
# Set working directory
WORKDIR /data
# Copy examples
COPY --chown=user:user ./code_examples ./code_examples
# Set user
USER user
# Use heredoc with explicit delimiter
RUN <<'ENDCONFIG' cat > $HOME/.marimo.toml
[package_management]
manager = "uv"
[display]
cell_output = "below"
dataframes = "rich"
theme = "light"
ENDCONFIG
# Uncomment to enable password protection
# CMD ["marimo", "edit", "/data", "--host=0.0.0.0", "--port=7860", "--token-password=$(cat $HOME/.marimo_password)"]
CMD ["marimo", "edit", "/data", "--host=0.0.0.0", "--port=7860", "--no-token"]