FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c RUN mkdir -p /app/code WORKDIR /app/code ARG VERSION=4.5.0 # Prevent interactive prompts during installation ENV DEBIAN_FRONTEND=noninteractive # Install system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ git \ make \ gcc \ g++ \ libmariadb3 \ libmariadb-dev \ libpq-dev \ libffi-dev \ musl-dev \ curl \ ca-certificates \ libmagic-dev \ 7zip \ tzdata \ libbz2-dev \ libssl-dev \ libreadline-dev \ libsqlite3-dev \ zlib1g-dev \ liblzma-dev \ libncurses5-dev \ libncursesw5-dev \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Clone release RUN wget https://github.com/rommapp/romm/archive/refs/tags/$VERSION.tar.gz && \ tar xfz $VERSION.tar.gz --strip-components=1 -C /app/code && rm $VERSION.tar.gz # Install nvm ENV NVM_DIR="/root/.nvm" RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \ && . "$NVM_DIR/nvm.sh" \ && nvm install 18.20.8 \ && nvm use 18.20.8 \ && nvm alias default 18.20.8 ENV PATH="$NVM_DIR/versions/node/v18.20.8/bin:$PATH" # Build and install RAHasher (optional for RA hashes) RUN git clone --recursive --branch 1.8.1 --depth 1 https://github.com/RetroAchievements/RALibretro.git /tmp/RALibretro WORKDIR /tmp/RALibretro RUN sed -i '22a #include ' ./src/Util.h \ && sed -i '6a #include ' \ ./src/libchdr/deps/zlib-1.3.1/gzlib.c \ ./src/libchdr/deps/zlib-1.3.1/gzread.c \ ./src/libchdr/deps/zlib-1.3.1/gzwrite.c \ && make HAVE_CHD=1 -f ./Makefile.RAHasher \ && cp ./bin64/RAHasher /usr/bin/RAHasher RUN rm -rf /tmp/RALibretro # Install frontend dependencies COPY frontend/package.json /app/code/frontend/ WORKDIR /app/code/frontend RUN npm install # Install uv for the non-root user COPY --from=ghcr.io/astral-sh/uv:0.7.19 /uv /uvx /usr/local/bin/ # Install Python RUN uv python install 3.13 # Copy project files (including pyproject.toml and uv.lock) COPY pyproject.toml uv.lock* .python-version /app/code/ # Install Python dependencies RUN uv sync --all-extras ENV PATH="/app/code/.venv/bin:${PATH}" COPY start.sh /app/pkg/ CMD [ "/app/pkg/start.sh" ]