diff --git a/.env.example b/.env.example index 856780a3..c48e153b 100644 --- a/.env.example +++ b/.env.example @@ -33,7 +33,7 @@ PROVER_ADDRESS="https://zkemail--email-auth-prover-v1-5-2-flask-app.modal.run" DATABASE_URL="postgres://test@localhost/emailauth_test" RELAYER_EMAIL_ADDR= -WEB_SERVER_ADDRESS="127.0.0.1:4500" +WEB_SERVER_ADDRESS=127.0.0.1:4500 # For docker-compose, use 0.0.0.0 EMAIL_TEMPLATES_PATH=./eml_templates REGEX_JSON_DIR_PATH="./src/regex_json" @@ -44,4 +44,6 @@ IC_REPLICA_URL="https://a4gq6-oaaaa-aaaab-qaa4q-cai.raw.icp0.io/?id=fxmww-qiaaa- CIRCUITS_DIR_PATH=../circuits -ERROR_EMAIL_ADDR="error@example.com" \ No newline at end of file +ERROR_EMAIL_ADDR="error@example.com" + +IC_PEM_CONTENT= # Set the base64-encoded content of ic.pem \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index fc094365..b5b82a58 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,3 +2,6 @@ members = ["packages/relayer"] exclude = ["node_modules/*", "packages/relayer/src/abis"] resolver = "2" + +[profile.release] +lto = true \ No newline at end of file diff --git a/Relayer.Dockerfile b/Relayer.Dockerfile index 0bb27c04..b7d4b36d 100644 --- a/Relayer.Dockerfile +++ b/Relayer.Dockerfile @@ -5,6 +5,12 @@ FROM rust:latest AS builder # Use bash as the shell SHELL ["/bin/bash", "-c"] +# Install build-essential and other dependencies +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + && rm -rf /var/lib/apt/lists/* + # Install NVM, Node.js, and Yarn RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash \ && . $HOME/.nvm/nvm.sh \ @@ -45,9 +51,6 @@ RUN source $HOME/.nvm/nvm.sh && nvm use default && yarn && forge build # Set the working directory for the Rust project and build it WORKDIR /relayer/packages/relayer -# Copy the IC PEM file -COPY packages/relayer/.ic.pem /relayer/.ic.pem - # Build the Rust project with caching RUN cargo build --release @@ -57,14 +60,19 @@ FROM debian:bookworm-slim # Install necessary runtime dependencies RUN apt-get update && apt-get install -y \ + build-essential \ libssl-dev \ + curl \ && rm -rf /var/lib/apt/lists/* # Copy the built binary from the builder stage COPY --from=builder /relayer/target/release/relayer /usr/local/bin/relayer -# Copy the IC PEM file -COPY --from=builder /relayer/.ic.pem /relayer/.ic.pem +# Copy eml_templates directory from builder stage to root directory +COPY --from=builder /relayer/packages/relayer/eml_templates /eml_templates + +# Copy regex_json directory from builder stage to root directory +COPY --from=builder /relayer/packages/relayer/src/regex_json /regex_json # Expose the required port EXPOSE 4500 diff --git a/SMTP.Dockerfile b/SMTP.Dockerfile index 62645ffe..87624888 100644 --- a/SMTP.Dockerfile +++ b/SMTP.Dockerfile @@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \ WORKDIR /usr/src/relayer-smtp # Clone the repository -RUN git clone https://github.com/zkemail/relayer-smtp.git . +RUN git clone https://github.com/zkfriendly/relayer-smtp.git . # Build the application RUN cargo build --release @@ -24,6 +24,7 @@ FROM debian:bookworm-slim RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ + ca-certificates \ && rm -rf /var/lib/apt/lists/* # Copy the built binary from the builder stage diff --git a/docker-compose.yml b/docker-compose.yml index 70159c64..2bbbccbd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,31 +2,31 @@ version: '3.8' services: relayer-smtp: - build: - context: . - dockerfile: SMTP.Dockerfile + image: wshino/relayer-smtp:latest container_name: relayer-smtp ports: - - "3000:3000" + - "8080:8080" env_file: - .env + extra_hosts: + - "host.docker.internal:host-gateway" relayer-imap: - build: - context: . - dockerfile: IMAP.Dockerfile + image: wshino/relayer-imap:latest container_name: relayer-imap - ports: - - "3001:3001" env_file: - .env + extra_hosts: + - "host.docker.internal:host-gateway" relayer: - build: - context: . - dockerfile: Relayer.Dockerfile + image: wshino/relayer:latest container_name: relayer ports: - "4500:4500" env_file: - - .env \ No newline at end of file + - .env + entrypoint: > + /bin/sh -c "echo \"$IC_PEM_CONTENT\" | base64 -d > /.ic.pem && exec /usr/local/bin/relayer" + extra_hosts: + - "host.docker.internal:host-gateway" \ No newline at end of file