R
Railway•2mo ago
bebop

Invalid cache mounts

I receive Invalid cache mounts on this Dockerfile but I am not sure why, I am following the Railway docs exactly. Any help would be greatly appreciated, thanks.
# syntax=docker/dockerfile:1

# Comments are provided throughout this file to help you get started.
# If you need more help, visit the Dockerfile reference guide at
# https://docs.docker.com/go/dockerfile-reference/

# Want to help us make this template better? Share your feedback here: https://forms.gle/ybq9Krt8jtBL3iCk7

ARG PYTHON_VERSION=3.11.4
FROM python:${PYTHON_VERSION}-slim as base

# Prevents Python from writing pyc files.
ENV PYTHONDONTWRITEBYTECODE=1

# Keeps Python from buffering stdout and stderr to avoid situations where
# the application crashes without emitting any logs due to buffering.
ENV PYTHONUNBUFFERED=1

# Install custom dependencies for pypandoc and weasyprint.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
pandoc \
texlive \
lmodern \
libpango-1.0-0 \
libpangoft2-1.0-0 \
libharfbuzz-subset0 \
libjpeg-dev \
libopenjp2-7-dev \
libffi-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Create a non-privileged user that the app will run under.
# See https://docs.docker.com/go/dockerfile-user-best-practices/
ARG UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
appuser

# Download dependencies as a separate step to take advantage of Docker's caching.
# Leverage a cache mount to /root/.cache/pip to speed up subsequent builds.
# Leverage a bind mount to requirements.txt to avoid having to copy them into
# into this layer.
RUN --mount=type=cache,id=s/d5f99fa7-4033-4d6f-a46c-46ae0524ae87-/root/.cache/pip,target=/root/.cache/pip \
--mount=type=bind,source=requirements.txt,target=requirements.txt \
python -m pip install -r requirements.txt

# Switch to the non-privileged user to run the application.
USER appuser

# Copy the source code into the container.
COPY . .

# Expose the port that the application listens on.
EXPOSE 8000

# Run the application.
CMD hypercorn main:app --bind [::]:8000
# syntax=docker/dockerfile:1

# Comments are provided throughout this file to help you get started.
# If you need more help, visit the Dockerfile reference guide at
# https://docs.docker.com/go/dockerfile-reference/

# Want to help us make this template better? Share your feedback here: https://forms.gle/ybq9Krt8jtBL3iCk7

ARG PYTHON_VERSION=3.11.4
FROM python:${PYTHON_VERSION}-slim as base

# Prevents Python from writing pyc files.
ENV PYTHONDONTWRITEBYTECODE=1

# Keeps Python from buffering stdout and stderr to avoid situations where
# the application crashes without emitting any logs due to buffering.
ENV PYTHONUNBUFFERED=1

# Install custom dependencies for pypandoc and weasyprint.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
pandoc \
texlive \
lmodern \
libpango-1.0-0 \
libpangoft2-1.0-0 \
libharfbuzz-subset0 \
libjpeg-dev \
libopenjp2-7-dev \
libffi-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Create a non-privileged user that the app will run under.
# See https://docs.docker.com/go/dockerfile-user-best-practices/
ARG UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
appuser

# Download dependencies as a separate step to take advantage of Docker's caching.
# Leverage a cache mount to /root/.cache/pip to speed up subsequent builds.
# Leverage a bind mount to requirements.txt to avoid having to copy them into
# into this layer.
RUN --mount=type=cache,id=s/d5f99fa7-4033-4d6f-a46c-46ae0524ae87-/root/.cache/pip,target=/root/.cache/pip \
--mount=type=bind,source=requirements.txt,target=requirements.txt \
python -m pip install -r requirements.txt

# Switch to the non-privileged user to run the application.
USER appuser

# Copy the source code into the container.
COPY . .

# Expose the port that the application listens on.
EXPOSE 8000

# Run the application.
CMD hypercorn main:app --bind [::]:8000
Solution:
you are using a bind mount, we do not support that
Jump to solution
7 Replies
Percy
Percy•2mo ago
Project ID: d5f99fa7-4033-4d6f-a46c-46ae0524ae87
Solution
Brody
Brody•2mo ago
you are using a bind mount, we do not support that
bebop
bebopOP•2mo ago
gotcha, will try without, ty
Brody
Brody•2mo ago
honestly it provides minimal built time benefits
bebop
bebopOP•2mo ago
gotcha, ended up with because I was following: https://docs.docker.com/guides/python/containerize/
Docker Documentation
Containerize your app
Learn how to containerize a Python application.
bebop
bebopOP•2mo ago
but all fixed now 🙂
Brody
Brody•2mo ago
awesome
Want results from more Discord servers?
Add your server