Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/relayer docker #115

Merged
merged 8 commits into from
Mar 21, 2025
Prev Previous commit
Next Next commit
refactor: remove legacy Dockerfiles and add docker-compose for servic…
…e orchestration
zkfriendly committed Mar 19, 2025
commit a13e8ed49c810094112184d8516a35d2278364f0
51 changes: 0 additions & 51 deletions Base.Dockerfile

This file was deleted.

17 changes: 0 additions & 17 deletions IMAP.Dockerfile

This file was deleted.

6 changes: 3 additions & 3 deletions Relayer.Dockerfile
Original file line number Diff line number Diff line change
@@ -57,9 +57,7 @@ RUN apt-get update && apt-get install -y \
libssl3 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& update-ca-certificates \
&& mkdir -p /etc/ssl/certs \
&& ln -s /etc/ssl/certs/ca-certificates.crt /etc/ssl/cert.pem
&& update-ca-certificates

# Set the working directory
WORKDIR /app
@@ -71,3 +69,5 @@ COPY --from=rust-builder /app/packages/relayer/target/release/relayer /app/relay
COPY --from=rust-builder /app/packages/relayer/eml_templates /app/eml_templates
COPY --from=rust-builder /app/packages/relayer/graphql /app/graphql
COPY --from=rust-builder /app/packages/relayer/input_files /app/input_files

CMD [ "/app/relayer" ]
20 changes: 0 additions & 20 deletions SMTP.Dockerfile

This file was deleted.

100 changes: 100 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
services:
db:
image: postgres:15
environment:
POSTGRES_USER: emailWallet
POSTGRES_PASSWORD: emailWallet_password
POSTGRES_DB: emailWallet
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U emailWallet" ]
interval: 5s
timeout: 5s
retries: 5

smtp:
build:
context: ./packages/relayer
dockerfile: SMTP.Dockerfile
environment:
- SERVER_HOST=${SMTP_INTERNAL_SERVER_HOST}
- SERVER_PORT=${SMTP_INTERNAL_SERVER_PORT}
- SMTP_DOMAIN_NAME=${SMTP_DOMAIN_NAME}
- SMTP_LOGIN_ID=${SMTP_LOGIN_ID}
- SMTP_LOGIN_PASSWORD=${SMTP_LOGIN_PASSWORD}
- MESSAGE_ID_DOMAIN=${SMTP_MESSAGE_ID_DOMAIN}
- JSON_LOGGER=${SMPT_JSON_LOGGER}
ports:
- "${SMTP_PORT}:${SMTP_INTERNAL_SERVER_PORT}"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:${SMTP_INTERNAL_SERVER_PORT}/api/ping" ]
interval: 1m30s
timeout: 30s
retries: 5
start_period: 30s

imap:
build:
context: ./packages/relayer
dockerfile: IMAP.Dockerfile
environment:
- RELAYER_ENDPOINT=http://relayer:4500/api/receiveEmail
- IMAP_LOGIN_ID=${IMAP_LOGIN_ID}
- IMAP_LOGIN_PASSWORD=${IMAP_LOGIN_PASSWORD}
- IMAP_DOMAIN_NAME=${IMAP_DOMAIN_NAME}
- IMAP_PORT=${IMAP_PORT}
- AUTH_TYPE=${IMAP_AUTH_TYPE}
- JSON_LOGGER=${IMAP_JSON_LOGGER}
depends_on:
- relayer

relayer:
build:
context: .
dockerfile: Relayer.Dockerfile
environment:
- CORE_CONTRACT_ADDRESS=${CORE_CONTRACT_ADDRESS}
- PRIVATE_KEY=${PRIVATE_KEY}
- CHAIN_RPC_PROVIDER=${CHAIN_RPC_PROVIDER}
- CHAIN_RPC_EXPLORER=${CHAIN_RPC_EXPLORER}
- CHAIN_ID=${CHAIN_ID}
- CANISTER_ID=${CANISTER_ID}
- PEM_PATH=/app/.ic.pem
- IC_REPLICA_URL=${IC_REPLICA_URL}
- WALLET_CANISTER_ID=${WALLET_CANISTER_ID}
- SMTP_SERVER=http://smtp:${SMTP_INTERNAL_SERVER_PORT}/api/sendEmail
- ERROR_EMAIL_ADDRESSES=${ERROR_EMAIL_ADDRESSES}
- PROVER_ADDRESS=${PROVER_ADDRESS}
- FEE_PER_GAS=${FEE_PER_GAS}
- DATABASE_URL=postgres://emailWallet:emailWallet_password@db/emailWallet
- RELAYER_EMAIL_ADDR=${RELAYER_EMAIL_ADDR}
- RELAYER_HOSTNAME=${RELAYER_HOSTNAME}
- WEB_SERVER_ADDRESS=${WEB_SERVER_ADDRESS}
- CIRCUITS_DIR_PATH=${CIRCUITS_DIR_PATH}
- SUBGRAPH_URL=${SUBGRAPH_URL}
- INPUT_FILES_DIR_PATH=${INPUT_FILES_DIR_PATH}
- EMAIL_TEMPLATES_PATH=${EMAIL_TEMPLATES_PATH}
- ONBOARDING_TOKEN_ADDR=${ONBOARDING_TOKEN_ADDR}
- ONBOARDING_TOKEN_AMOUNT=${ONBOARDING_TOKEN_AMOUNT}
- ONBOARDING_TOKEN_DISTRIBUTION_LIMIT=${ONBOARDING_TOKEN_DISTRIBUTION_LIMIT}
- ONBOARDING_REPLY=${ONBOARDING_REPLY}
- SAFE_API_ENDPOINT=${SAFE_API_ENDPOINT}
- JSON_LOGGER=${JSON_LOGGER}
ports:
- "4500:4500"
volumes:
- .ic.pem:/app/.ic.pem
dns:
- 8.8.8.8
- 8.8.4.4
depends_on:
db:
condition: service_healthy
smtp:
condition: service_healthy

volumes:
postgres_data: