65 lines
2.0 KiB
Docker
65 lines
2.0 KiB
Docker
FROM rust:1.36-stretch as rust-builder
|
|
MAINTAINER Dorian Pula <dorian.pula@amber-penguin-software.ca>
|
|
|
|
# Cache the Rust dependencies -> http://whitfin.io/speeding-up-rust-docker-builds/
|
|
RUN rustup component add rustfmt && cargo install cargo-make
|
|
|
|
WORKDIR /app/rookeries/
|
|
RUN USER=root cargo init --bin .
|
|
COPY ["Cargo.toml", "Cargo.lock", "/app/rookeries/"]
|
|
RUN cargo build && rm src/*.rs
|
|
|
|
COPY ["Makefile.toml", "build.rs", "/app/rookeries/"]
|
|
COPY ["template", "/app/rookeries/template/"]
|
|
COPY ["src", "/app/rookeries/src/"]
|
|
RUN cargo build
|
|
|
|
FROM node:10.15-stretch as node-builder
|
|
|
|
# Install Node dependencies
|
|
RUN apt-get update \
|
|
&& apt-get install -y chromium chromium-driver
|
|
COPY ["web-app/package.json", "web-app/package-lock.json", "/app/rookeries/web-app/"]
|
|
RUN cd /app/rookeries/web-app/ && npm install --verbose
|
|
|
|
COPY web-app/ /app/rookeries/web-app/
|
|
COPY plugins/ /app/rookeries/plugins/
|
|
|
|
RUN mkdir -p /app/rookeries/web-app/static/js/ \
|
|
&& mkdir -p /var/www
|
|
|
|
WORKDIR /app/rookeries/
|
|
RUN cd web-app && npm run build
|
|
RUN cd plugins && ./plugin-builder.sh
|
|
|
|
WORKDIR /app/rookeries/web-app
|
|
|
|
FROM debian:stretch-slim as final
|
|
ENV DUMB_INIT_VERSION="1.2.0"
|
|
|
|
# Add Docker utilities
|
|
RUN apt-get update \
|
|
&& apt-get install -y wget gnupg2 libssl-dev \
|
|
&& wget https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64.deb \
|
|
&& dpkg -i dumb-init_*.deb \
|
|
&& rm dumb-init_*.deb
|
|
|
|
RUN mkdir -p /app/rookeries/
|
|
|
|
COPY --from=rust-builder /app/rookeries/target/debug/rookeries /home/www-data/.local/bin/rookeries
|
|
COPY --from=node-builder /app/rookeries/web-app/static/ /app/rookeries/web-app/static/
|
|
COPY --from=node-builder /app/rookeries/plugins/ /app/rookeries/plugins/
|
|
|
|
WORKDIR /app/rookeries/
|
|
|
|
# Fix permissions
|
|
RUN chown www-data . --recursive \
|
|
&& chgrp www-data . --recursive \
|
|
&& chmod g+rw . --recursive
|
|
|
|
USER www-data
|
|
|
|
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
|
|
CMD ["/home/www-data/.local/bin/rookeries"]
|
|
EXPOSE 5000
|