Files
tuono/docker/Dockerfile
T
2025-01-27 19:29:08 +01:00

51 lines
1.4 KiB
Docker

# ARGs obtained from the compose.yml file
ARG BASE_OS=bookworm
ARG RUST_VERSION=1.83
FROM rust:${RUST_VERSION}-${BASE_OS}
# Nodejs installation
RUN ["mkdir", "/usr/local/node"]
WORKDIR /usr/local/node
## Retrieves the targeted version of Node in the container
COPY .nvmrc /tmp/.nvmrc
## Download the Node.js standelone binary archive && extract it && clean files
RUN ["/bin/sh", "-c", "NODE_VERSION=$(cat /tmp/.nvmrc | tr -d '\r') && \
wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz && \
tar xf node-v${NODE_VERSION}-linux-x64.tar.xz --strip-components 1 && \
rm node-v${NODE_VERSION}-linux-x64.tar.xz /tmp/.nvmrc"]
## Ensure Node.js binaries are available in the PATH
ENV PATH /usr/local/node/bin:$PATH
# cargo-watch installation (for Rust live-reloading during dev')
RUN ["cargo", "install", "cargo-watch"]
# global configuration done ! let's focus on the project itself
## Copy project files into the container (excepted files/dir declared in .dockerignore) to /tuono directory
WORKDIR /tuono
COPY . .
# pnpm installation based on version found in package.json
RUN ["corepack", "enable"]
RUN ["corepack", "install"]
## Install Node.js dependencies (defined in package.json)
RUN ["pnpm", "install", "--frozen-lockfile"]
## Compile and add the directory with compiled binaries to the PATH for direct access
RUN ["cargo", "build"]
ENV PATH=/tuono/target/debug:$PATH