FROM alpine
WORKDIR /usr/src/oxyromon
COPY . .
# NOTE: The web UI build (Trunk) downloads prebuilt wasm-bindgen/wasm-opt tools
# that are compiled against glibc, so `gcompat` is installed to run them under
# musl.
RUN apk add --no-cache build-base curl gcompat musl-dev 7zip rustup && \
rustup-init -y --target wasm32-unknown-unknown && \
source /root/.cargo/env && \
curl -fsSL https://github.com/trunk-rs/trunk/releases/download/v0.21.14/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- -C /usr/local/bin && \
cargo install \
--features nod,server,sevenz \
--root /usr \
--path . && \
cargo clean && \
rm -rf /root/.cargo /root/.rustup /root/.cache /usr/local/bin/trunk /tmp/* && \
apk del --no-cache build-base musl-dev rustup
WORKDIR /
RUN rm -rf /usr/src/oxyromon
ENV OXYROMON_DATA_DIRECTORY=/data \
OXYROMON_ROM_DIRECTORY=/roms
VOLUME [ "/data", "/roms" ]
CMD ["oxyromon"]