diff --git a/services/backup/Dockerfile b/services/backup/Dockerfile --- a/services/backup/Dockerfile +++ b/services/backup/Dockerfile @@ -1,51 +1,39 @@ -FROM commapp/services-base:1.3.2 as builder +FROM rust:1.70-bullseye as builder -ENV PATH=/root/.cargo/bin:$PATH - -# Install Curl -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y curl \ +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential cmake git libgtest-dev libssl-dev zlib1g-dev \ && rm -rf /var/lib/apt/lists/* -# Install Rust -RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +WORKDIR /home/root/app/backup -RUN mkdir -p /home/comm/app/backup -WORKDIR /home/comm/app/backup -RUN cargo init --bin +# Install more recent version of protobuf, must be ran as root +COPY scripts/install_protobuf.sh ../../scripts/install_protobuf.sh +RUN ../../scripts/install_protobuf.sh -# Cache build dependencies in a new layer -COPY services/backup/Cargo.toml services/backup/Cargo.lock ./ -COPY services/comm-services-lib ../comm-services-lib -RUN cargo build --release && rm src/*.rs +ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse # Copy actual application sources -COPY services/backup . +COPY services/comm-services-lib ../comm-services-lib +COPY services/backup ./ -# Remove the previously-built binary so that only the application itself is -# rebuilt -RUN rm ./target/release/deps/backup* -RUN cargo build --release +RUN cargo install --locked --path . # Runner stage -FROM commapp/services-base:1.3.2 as runner +FROM debian:bullseye-slim as runner + +# Update dependencies, install ca-certificates which are required for TLS +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Only copy built binary from builder stage +COPY --from=builder /usr/local/cargo/bin/backup /usr/local/bin/backup +WORKDIR /home/comm/app/backup # Create a new user comm and use it to run subsequent commands RUN useradd -m comm USER comm -# Only copy built binary from builder stage -WORKDIR /home/comm/app/backup -COPY --from=builder /home/comm/app/backup/target/release/backup . - -ARG COMM_SERVICES_SANDBOX -ENV COMM_SERVICES_SANDBOX=${COMM_SERVICES_SANDBOX} -ARG LOCALSTACK_URL -ENV LOCALSTACK_URL=${LOCALSTACK_URL} -ARG BLOB_SERVICE_URL -ENV BLOB_SERVICE_URL=${BLOB_SERVICE_URL} - -CMD ./backup \ - --localstack-url ${LOCALSTACK_URL} \ - --blob-service-url ${BLOB_SERVICE_URL} - # The COMM_SERVICES_SANDBOX is processed by the executable +ENV RUST_LOG=info + +CMD ["backup"] diff --git a/services/docker-compose.yml b/services/docker-compose.yml --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -18,20 +18,18 @@ - $HOME/.aws/credentials:/home/comm/.aws/credentials:ro # backup backup-server: + platform: linux/amd64 depends_on: - localstack - blob-server build: dockerfile: services/backup/Dockerfile context: ../ - args: - - COMM_SERVICES_SANDBOX=${COMM_SERVICES_SANDBOX} - - LOCALSTACK_URL=http://localstack:4566 - - BLOB_SERVICE_URL=http://blob-server:50051 - image: commapp/backup-server:0.1 + image: commapp/backup-server:0.2 ports: - - '${COMM_SERVICES_PORT_BACKUP}:50051' + - '${COMM_SERVICES_PORT_BACKUP}:50052' volumes: + - $HOME/.aws/config:/home/comm/.aws/config:ro - $HOME/.aws/credentials:/home/comm/.aws/credentials:ro # blob blob-server: