upodate to node.js

This commit is contained in:
Andreas Knuth 2025-07-07 14:12:09 -05:00
parent 0663a7c6bc
commit 65866de63b
5 changed files with 81 additions and 5 deletions

View File

@ -0,0 +1,21 @@
services:
email-api:
container_name: email-api
image: python:3.12-slim
restart: unless-stopped
network_mode: host
volumes:
- ./email_api:/app
- /var/mail:/var/mail # Maildir-Zugriff für Health-Check
working_dir: /app
env_file:
- .env
environment:
- API_TOKEN=${API_TOKEN}
- AWS_REGION=${AWS_REGION}
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
command: >
bash -c "pip install --upgrade pip &&
pip install flask python-dotenv boto3 requests &&
python app.py"

View File

@ -1,12 +1,14 @@
version: '3.8'
services:
email-api:
container_name: email-api
image: python:3.12-slim
image: node:18-slim
restart: unless-stopped
network_mode: host
volumes:
- ./email_api:/app
- /var/mail:/var/mail # Maildir-Zugriff für Health-Check
- /var/mail:/var/mail # Maildir access for health check
working_dir: /app
env_file:
- .env
@ -15,7 +17,33 @@ services:
- AWS_REGION=${AWS_REGION}
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- SMTP_HOST=${SMTP_HOST:-localhost}
- SMTP_PORT=${SMTP_PORT:-25}
- MAILCOW_API_KEY=${MAILCOW_API_KEY}
- MAILCOW_API=${MAILCOW_API}
- PGHOST=postgres
- PGUSER=${PGUSER:-email_user}
- PGPASSWORD=${PGPASSWORD:-email_password}
- PGDATABASE=${PGDATABASE:-email_db}
- PGPORT=${PGPORT:-5432}
command: >
bash -c "pip install --upgrade pip &&
pip install flask python-dotenv boto3 requests &&
python app.py"
bash -c "npm install express aws-sdk nodemailer emailjs-mime-parser emailjs-addressparser js-base64 winston dotenv axios pg &&
node app.js"
depends_on:
- postgres
postgres:
container_name: postgres
image: postgres:16
restart: unless-stopped
network_mode: host
environment:
- POSTGRES_USER=${PGUSER:-email_user}
- POSTGRES_PASSWORD=${PGPASSWORD:-email_password}
- POSTGRES_DB=${PGDATABASE:-email_db}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
volumes:
postgres_data:

View File

View File

@ -0,0 +1,16 @@
{
"name": "email-api",
"version": "1.0.0",
"dependencies": {
"express": "^4.18.2",
"aws-sdk": "^2.1490.0",
"nodemailer": "^6.9.7",
"emailjs-mime-parser": "^2.1.0",
"emailjs-addressparser": "^2.0.0",
"js-base64": "^3.7.5",
"winston": "^3.11.0",
"dotenv": "^16.3.1",
"axios": "^1.6.2",
"pg": "^8.11.3"
}
}

11
email_api/init.sql Normal file
View File

@ -0,0 +1,11 @@
CREATE TABLE email_statuses (
id SERIAL PRIMARY KEY,
domain VARCHAR(255) NOT NULL,
s3_key VARCHAR(1024) NOT NULL,
status VARCHAR(50) NOT NULL,
timestamp BIGINT NOT NULL,
processor VARCHAR(50) NOT NULL,
from_addr TEXT,
to_addrs TEXT[],
UNIQUE (domain, s3_key)
);