evolution-api / Dockerfile
oex2003's picture
Update Dockerfile
e8306c7 verified
FROM node:20-bullseye
# 1. تثبيت متطلبات النظام
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
&& rm -rf /var/lib/apt/lists/*
# 2. نسخ ملفات المشروع
WORKDIR /app
COPY package*.json ./
COPY tsconfig.json ./
COPY tsup.config.ts ./
COPY prisma ./prisma/
COPY src ./src/
COPY manager ./manager/
# 3. تضمين متغيرات البيئة من .env.example
ENV SERVER_TYPE=http
ENV SERVER_PORT=7860
ENV SERVER_URL=https://oex2003-evolution_api.hf.space
ENV SSL_CONF_PRIVKEY=/path/to/cert.key
ENV SSL_CONF_FULLCHAIN=/path/to/cert.crt
ENV SENTRY_DSN=
ENV CORS_ORIGIN=*
ENV CORS_METHODS=GET,POST,PUT,DELETE
ENV CORS_CREDENTIALS=true
ENV LOG_LEVEL=ERROR,WARN,DEBUG,INFO,LOG,VERBOSE,DARK,WEBHOOKS,WEBSOCKET
ENV LOG_COLOR=true
ENV LOG_BAILEYS=verbose
ENV EVENT_EMITTER_MAX_LISTENERS=50
ENV DEL_INSTANCE=false
ENV DATABASE_PROVIDER=postgresql
ENV DATABASE_URL="postgresql://postgres.spnhuzaclgccmmunhmfc:Akalimain000-@aws-0-eu-north-1.pooler.supabase.com:5432/postgres?pgbouncer=true&statement_cache_size=0"
ENV DATABASE_CONNECTION_URI="postgresql://postgres.spnhuzaclgccmmunhmfc:Akalimain000-@aws-0-eu-north-1.pooler.supabase.com:5432/postgres?pgbouncer=true&statement_cache_size=0"
ENV DATABASE_CONNECTION_CLIENT_NAME=evolution_exchange
ENV DATABASE_SAVE_DATA_INSTANCE=true
ENV DATABASE_SAVE_DATA_NEW_MESSAGE=true
ENV DATABASE_SAVE_MESSAGE_UPDATE=true
ENV DATABASE_SAVE_DATA_CONTACTS=true
ENV DATABASE_SAVE_DATA_CHATS=true
ENV DATABASE_SAVE_DATA_LABELS=true
ENV DATABASE_SAVE_DATA_HISTORIC=true
ENV DATABASE_SAVE_IS_ON_WHATSAPP=true
ENV DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7
ENV DATABASE_DELETE_MESSAGE=true
ENV RABBITMQ_ENABLED=false
ENV RABBITMQ_URI=amqp://localhost
ENV RABBITMQ_EXCHANGE_NAME=evolution
ENV RABBITMQ_FRAME_MAX=8192
ENV RABBITMQ_GLOBAL_ENABLED=false
ENV RABBITMQ_PREFIX_KEY=evolution
ENV RABBITMQ_EVENTS_APPLICATION_STARTUP=false
ENV RABBITMQ_EVENTS_INSTANCE_CREATE=false
ENV RABBITMQ_EVENTS_INSTANCE_DELETE=false
ENV RABBITMQ_EVENTS_QRCODE_UPDATED=false
ENV RABBITMQ_EVENTS_MESSAGES_SET=false
ENV RABBITMQ_EVENTS_MESSAGES_UPSERT=false
ENV RABBITMQ_EVENTS_MESSAGES_EDITED=false
ENV RABBITMQ_EVENTS_MESSAGES_UPDATE=false
ENV RABBITMQ_EVENTS_MESSAGES_DELETE=false
ENV RABBITMQ_EVENTS_SEND_MESSAGE=false
ENV RABBITMQ_EVENTS_SEND_MESSAGE_UPDATE=false
ENV RABBITMQ_EVENTS_CONTACTS_SET=false
ENV RABBITMQ_EVENTS_CONTACTS_UPSERT=false
ENV RABBITMQ_EVENTS_CONTACTS_UPDATE=false
ENV RABBITMQ_EVENTS_PRESENCE_UPDATE=false
ENV RABBITMQ_EVENTS_CHATS_SET=false
ENV RABBITMQ_EVENTS_CHATS_UPSERT=false
ENV RABBITMQ_EVENTS_CHATS_UPDATE=false
ENV RABBITMQ_EVENTS_CHATS_DELETE=false
ENV RABBITMQ_EVENTS_GROUPS_UPSERT=false
ENV RABBITMQ_EVENTS_GROUPS_UPDATE=false
ENV RABBITMQ_EVENTS_GROUP_PARTICIPANTS_UPDATE=false
ENV RABBITMQ_EVENTS_CONNECTION_UPDATE=false
ENV RABBITMQ_EVENTS_REMOVE_INSTANCE=false
ENV RABBITMQ_EVENTS_LOGOUT_INSTANCE=false
ENV RABBITMQ_EVENTS_CALL=false
ENV RABBITMQ_EVENTS_TYPEBOT_START=false
ENV RABBITMQ_EVENTS_TYPEBOT_CHANGE_STATUS=false
ENV SQS_ENABLED=false
ENV SQS_ACCESS_KEY_ID=
ENV SQS_SECRET_ACCESS_KEY=
ENV SQS_ACCOUNT_ID=
ENV SQS_REGION=
ENV WEBSOCKET_ENABLED=true
ENV WEBSOCKET_GLOBAL_EVENTS=true
ENV PUSHER_ENABLED=false
ENV PUSHER_GLOBAL_ENABLED=false
ENV PUSHER_GLOBAL_APP_ID=
ENV PUSHER_GLOBAL_KEY=
ENV PUSHER_GLOBAL_SECRET=
ENV PUSHER_GLOBAL_CLUSTER=
ENV PUSHER_GLOBAL_USE_TLS=true
ENV PUSHER_EVENTS_APPLICATION_STARTUP=true
ENV PUSHER_EVENTS_QRCODE_UPDATED=true
ENV PUSHER_EVENTS_MESSAGES_SET=true
ENV PUSHER_EVENTS_MESSAGES_UPSERT=true
ENV PUSHER_EVENTS_MESSAGES_EDITED=true
ENV PUSHER_EVENTS_MESSAGES_UPDATE=true
ENV PUSHER_EVENTS_MESSAGES_DELETE=true
ENV PUSHER_EVENTS_SEND_MESSAGE=true
ENV PUSHER_EVENTS_SEND_MESSAGE_UPDATE=true
ENV PUSHER_EVENTS_CONTACTS_SET=true
ENV PUSHER_EVENTS_CONTACTS_UPSERT=true
ENV PUSHER_EVENTS_CONTACTS_UPDATE=true
ENV PUSHER_EVENTS_PRESENCE_UPDATE=true
ENV PUSHER_EVENTS_CHATS_SET=true
ENV PUSHER_EVENTS_CHATS_UPSERT=true
ENV PUSHER_EVENTS_CHATS_UPDATE=true
ENV PUSHER_EVENTS_CHATS_DELETE=true
ENV PUSHER_EVENTS_GROUPS_UPSERT=true
ENV PUSHER_EVENTS_GROUPS_UPDATE=true
ENV PUSHER_EVENTS_GROUP_PARTICIPANTS_UPDATE=true
ENV PUSHER_EVENTS_CONNECTION_UPDATE=true
ENV PUSHER_EVENTS_LABELS_EDIT=true
ENV PUSHER_EVENTS_LABELS_ASSOCIATION=true
ENV PUSHER_EVENTS_CALL=true
ENV PUSHER_EVENTS_TYPEBOT_START=false
ENV PUSHER_EVENTS_TYPEBOT_CHANGE_STATUS=false
ENV WA_BUSINESS_TOKEN_WEBHOOK=evolution
ENV WA_BUSINESS_URL=https://graph.facebook.com
ENV WA_BUSINESS_VERSION=v20.0
ENV WA_BUSINESS_LANGUAGE=en_US
ENV WEBHOOK_GLOBAL_ENABLED=false
ENV WEBHOOK_GLOBAL_URL=
ENV WEBHOOK_GLOBAL_WEBHOOK_BY_EVENTS=false
ENV WEBHOOK_EVENTS_APPLICATION_STARTUP=false
ENV WEBHOOK_EVENTS_QRCODE_UPDATED=true
ENV WEBHOOK_EVENTS_MESSAGES_SET=true
ENV WEBHOOK_EVENTS_MESSAGES_UPSERT=true
ENV WEBHOOK_EVENTS_MESSAGES_EDITED=true
ENV WEBHOOK_EVENTS_MESSAGES_UPDATE=true
ENV WEBHOOK_EVENTS_MESSAGES_DELETE=true
ENV WEBHOOK_EVENTS_SEND_MESSAGE=true
ENV WEBHOOK_EVENTS_SEND_MESSAGE_UPDATE=true
ENV WEBHOOK_EVENTS_CONTACTS_SET=true
ENV WEBHOOK_EVENTS_CONTACTS_UPSERT=true
ENV WEBHOOK_EVENTS_CONTACTS_UPDATE=true
ENV WEBHOOK_EVENTS_PRESENCE_UPDATE=true
ENV WEBHOOK_EVENTS_CHATS_SET=true
ENV WEBHOOK_EVENTS_CHATS_UPSERT=true
ENV WEBHOOK_EVENTS_CHATS_UPDATE=true
ENV WEBHOOK_EVENTS_CHATS_DELETE=true
ENV WEBHOOK_EVENTS_GROUPS_UPSERT=true
ENV WEBHOOK_EVENTS_GROUPS_UPDATE=true
ENV WEBHOOK_EVENTS_GROUP_PARTICIPANTS_UPDATE=true
ENV WEBHOOK_EVENTS_CONNECTION_UPDATE=true
ENV WEBHOOK_EVENTS_REMOVE_INSTANCE=false
ENV WEBHOOK_EVENTS_LOGOUT_INSTANCE=false
ENV WEBHOOK_EVENTS_LABELS_EDIT=true
ENV WEBHOOK_EVENTS_LABELS_ASSOCIATION=true
ENV WEBHOOK_EVENTS_CALL=true
ENV WEBHOOK_EVENTS_TYPEBOT_START=false
ENV WEBHOOK_EVENTS_TYPEBOT_CHANGE_STATUS=false
ENV WEBHOOK_EVENTS_ERRORS=false
ENV WEBHOOK_EVENTS_ERRORS_WEBHOOK=
ENV WEBHOOK_REQUEST_TIMEOUT_MS=60000
ENV WEBHOOK_RETRY_MAX_ATTEMPTS=10
ENV WEBHOOK_RETRY_INITIAL_DELAY_SECONDS=5
ENV WEBHOOK_RETRY_USE_EXPONENTIAL_BACKOFF=true
ENV WEBHOOK_RETRY_MAX_DELAY_SECONDS=300
ENV WEBHOOK_RETRY_JITTER_FACTOR=0.2
ENV WEBHOOK_RETRY_NON_RETRYABLE_STATUS_CODES=400,401,403,404,422
ENV CONFIG_SESSION_PHONE_NAME=Chrome
ENV CONFIG_SESSION_PHONE_VERSION=2.3000.1023223821
ENV QRCODE_LIMIT=30
ENV QRCODE_COLOR=#000000
ENV TYPEBOT_ENABLED=false
ENV TYPEBOT_API_VERSION=latest
ENV CHATWOOT_ENABLED=false
ENV CHATWOOT_MESSAGE_READ=true
ENV CHATWOOT_MESSAGE_DELETE=true
ENV CHATWOOT_BOT_CONTACT=true
ENV CHATWOOT_IMPORT_DATABASE_CONNECTION_URI=
ENV CHATWOOT_IMPORT_PLACEHOLDER_MEDIA_MESSAGE=true
ENV OPENAI_ENABLED=false
ENV DIFY_ENABLED=false
ENV N8N_ENABLED=false
ENV EVOAI_ENABLED=false
ENV CACHE_REDIS_ENABLED=true
ENV CACHE_REDIS_URI=rediss://default:ARgBAAIjcDE5NjMxODI2NGI1ZWQ0ZWNjOGM5MzZjNGI5MDM2Mjg1MnAxMA@related-ant-6145.upstash.io:6379
ENV CACHE_REDIS_TTL=604800
ENV CACHE_REDIS_PREFIX_KEY=evolution
ENV CACHE_REDIS_SAVE_INSTANCES=true
ENV CACHE_LOCAL_ENABLED=false
ENV S3_ENABLED=false
ENV S3_ACCESS_KEY=
ENV S3_SECRET_KEY=
ENV S3_BUCKET=evolution
ENV S3_PORT=443
ENV S3_ENDPOINT=s3.domain.com
ENV S3_REGION=eu-west-3
ENV S3_USE_SSL=true
ENV AUTHENTICATION_API_KEY=429683C4C977415CAAFCCE10F7D57E11
ENV AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=true
ENV LANGUAGE=en
ENV PROXY_HOST=
#ENV PROXY_PORT=80
ENV PROXY_PROTOCOL=http
ENV PROXY_USERNAME=
ENV PROXY_PASSWORD=""
# 4. تثبيت، إعداد مخطط Prisma، إنشاء العميل، والبناء
RUN npm install \
&& npm install \
&& mkdir -p prisma \
&& cp prisma/postgresql-schema.prisma prisma/schema.prisma \
&& npx prisma generate \
&& npm run build
# 5. كشف منفذ Huggingface ونسخ سكريبت بدء التشغيل
EXPOSE 7860
COPY run.sh /app/run.sh
RUN chmod +x /app/run.sh
# 6. إصلاح الأذونات والتبديل إلى مستخدم غير جذري
RUN chown -R node:node /app
USER node
WORKDIR /app
ENTRYPOINT ["bash", "/app/run.sh"]