diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..9b510c807 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,13 @@ +# Local build artifacts +build +node_modules + +# git folder +.git + +# IDE files +.vscode +.idea + +# Frontend files +src diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..42911f131 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM rust:1.60 + +# Build time options to avoid dpkg warnings and help with reproducible builds. +ENV DEBIAN_FRONTEND=noninteractive \ + CARGO_HOME="/app/target" + +# Create CARGO_HOME folder and don't download rust docs +RUN mkdir -pv "${CARGO_HOME}" \ + && rustup set profile minimal + +# Install system packages +RUN apt-get update \ + && apt-get install -y \ + --no-install-recommends \ + libopencv-dev clang libclang-dev libssl-dev ca-certificates \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +ENTRYPOINT ["cargo", "run", "--release"] diff --git a/Makefile b/Makefile index d054208f7..b4a97757c 100644 --- a/Makefile +++ b/Makefile @@ -24,3 +24,6 @@ signer: tests: cargo test --release + +docker.%: + docker-compose run --rm $(*) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..b1612e815 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +services: + _cli: + &cli + build: . + volumes: + - .:/app + + collector: + <<: *cli + command: collect + + updater: + <<: *cli + command: update diff --git a/rust-toolchain b/rust-toolchain new file mode 100644 index 000000000..2bf5ad044 --- /dev/null +++ b/rust-toolchain @@ -0,0 +1 @@ +stable