Skip to content

Commit

Permalink
fix: more descriptive name, plus dockerfile (#37)
Browse files Browse the repository at this point in the history
* fix: more descriptive name

* feat: dockerfile

* feat: dockerfile
  • Loading branch information
rswanson authored Dec 20, 2024
1 parent 7188a09 commit 8410b3d
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Docker ECR Push
name: Docker ECR Push - Builder

on:
push:
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/transaction-sender-ecr-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Docker ECR Push - Transaction Sender

on:
push:
branches: [main]
tags:
- v**
workflow_dispatch:


permissions:
packages: write
contents: read
id-token: write

# simplest example of using the rust-base action
jobs:
docker-ecr-push:
uses: init4tech/actions/.github/workflows/ecr-build-and-push.yml@main
with:
rust-binary-name: transaction-sender
environment: dev
requires-private-deps: true
dockerfile-path: transaction-sender.Dockerfile
secrets:
aws-ecr-repository: ${{ secrets.AWS_ECR_REPOSITORY }}
aws-ecr-deployer-role-arn: ${{ secrets.AWS_ECR_DEPLOYER_ROLE_ARN }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ name = "zenith-builder-example"
path = "bin/builder.rs"

[[bin]]
name = "integration-test"
name = "transaction-submitter"
path = "bin/submit_transaction.rs"

[dependencies]
Expand Down
38 changes: 38 additions & 0 deletions transaction-submitter.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# syntax=docker/dockerfile:1.7-labs
### STAGE 0: Create base chef image for building
### cargo chef is used to speed up the build process by caching dependencies using docker
FROM --platform=$TARGETPLATFORM lukemathwalker/cargo-chef:latest-rust-latest as chef

RUN cargo install cargo-chef

WORKDIR /app

### Stage 1: cargo chef prepare
### Creates the recipe.json file which is a manifest of Cargo.toml files and
### the relevant Cargo.lock file
FROM chef as planner
COPY --exclude=target . .
RUN cargo chef prepare

### Stage 2: Build the project
### This stage builds the deps of the project (not the code) using cargo chef cook
### and then it copies the source code and builds the actual crates
### this takes advantage of docker layer caching to the max
FROM chef as builder
COPY --from=planner /app/recipe.json recipe.json
RUN apt-get update && apt-get -y upgrade && apt-get install -y gcc libclang-dev pkg-config libssl-dev
RUN rustup target add x86_64-unknown-linux-gnu
RUN rustup toolchain install stable-x86_64-unknown-linux-gnu

RUN --mount=type=ssh cargo chef cook --release --target x86_64-unknown-linux-gnu --recipe-path recipe.json --bin transaction-submitter
COPY --exclude=target . .

RUN --mount=type=ssh cargo build --release --target x86_64-unknown-linux-gnu --bin transaction-submitter

# Stage 3: Final image for running in the env
FROM --platform=$TARGETPLATFORM debian:bookworm-slim
RUN apt-get update && apt-get -y upgrade && apt-get install -y libssl-dev ca-certificates

COPY --from=builder /app/target/x86_64-unknown-linux-gnu/release/transaction-submitter /usr/local/bin/transaction-submitter

ENTRYPOINT [ "/usr/local/bin/transaction-submitter" ]

0 comments on commit 8410b3d

Please sign in to comment.