diff --git a/cmd/scraper/Dockerfile b/cmd/scraper/Dockerfile index 87297cd..a4c7e33 100644 --- a/cmd/scraper/Dockerfile +++ b/cmd/scraper/Dockerfile @@ -19,4 +19,4 @@ COPY --from=go-builder /app/scraper-build . EXPOSE 80 -ENTRYPOINT /go/bin/scraper-build +ENTRYPOINT /app/scraper-build diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 5fd16ce..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,201 +0,0 @@ -version: '3.8' - -services: - # MongoDB Database - mongodb: - image: mongo:6.0 - container_name: tm_mongodb - restart: unless-stopped - environment: - MONGO_INITDB_ROOT_USERNAME: admin - MONGO_INITDB_ROOT_PASSWORD: password - MONGO_INITDB_DATABASE: tender_management - ports: - - "27017:27017" - volumes: - - mongodb_data:/data/db - - ./scripts/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro - networks: - - tender_network - - # Redis Cache - redis: - image: redis:7-alpine - container_name: tm_redis - restart: unless-stopped - command: redis-server --appendonly yes --requirepass password - ports: - - "6379:6379" - volumes: - - redis_data:/data - networks: - - tender_network - - # RabbitMQ Message Queue - rabbitmq: - image: rabbitmq:3-management-alpine - container_name: tm_rabbitmq - restart: unless-stopped - environment: - RABBITMQ_DEFAULT_USER: admin - RABBITMQ_DEFAULT_PASS: password - RABBITMQ_DEFAULT_VHOST: / - ports: - - "5672:5672" # AMQP port - - "15672:15672" # Management UI - volumes: - - rabbitmq_data:/var/lib/rabbitmq - networks: - - tender_network - - # Elasticsearch Search Engine - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0 - container_name: tm_elasticsearch - restart: unless-stopped - environment: - - discovery.type=single-node - - xpack.security.enabled=false - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - ports: - - "9200:9200" - - "9300:9300" - volumes: - - elasticsearch_data:/usr/share/elasticsearch/data - networks: - - tender_network - - # Kibana (Optional - for Elasticsearch management) - kibana: - image: docker.elastic.co/kibana/kibana:8.11.0 - container_name: tm_kibana - restart: unless-stopped - environment: - - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - ports: - - "5601:5601" - depends_on: - - elasticsearch - networks: - - tender_network - - # Tender Management API - api: - build: - context: . - dockerfile: Dockerfile - container_name: tm_api - restart: unless-stopped - environment: - - TM_SERVER_HOST=0.0.0.0 - - TM_SERVER_PORT=8081 - - TM_DATABASE_MONGODB_URI=mongodb://admin:password@mongodb:27017/tender_management?authSource=admin - - TM_CACHE_REDIS_HOST=redis - - TM_CACHE_REDIS_PASSWORD=password - - TM_QUEUE_RABBITMQ_URL=amqp://admin:password@rabbitmq:5672/ - - TM_SEARCH_ELASTICSEARCH_URLS=http://elasticsearch:9200 - - TM_AUTH_JWT_SECRET=super-secret-jwt-key-change-in-production - - TM_LOGGING_LEVEL=info - ports: - - "8081:8081" - depends_on: - - mongodb - - redis - - rabbitmq - - elasticsearch - volumes: - - ./configs:/configs:ro - - ./logs:/logs - networks: - - tender_network - healthcheck: - test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8081/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - - # Background Worker (Optional) - worker: - build: - context: . - dockerfile: Dockerfile - container_name: tm_worker - restart: unless-stopped - command: ["/worker"] # Assuming we'll create a worker binary - environment: - - TM_DATABASE_MONGODB_URI=mongodb://admin:password@mongodb:27017/tender_management?authSource=admin - - TM_CACHE_REDIS_HOST=redis - - TM_CACHE_REDIS_PASSWORD=password - - TM_QUEUE_RABBITMQ_URL=amqp://admin:password@rabbitmq:5672/ - - TM_LOGGING_LEVEL=info - depends_on: - - mongodb - - redis - - rabbitmq - volumes: - - ./configs:/configs:ro - networks: - - tender_network - profiles: - - worker # Only start with: docker-compose --profile worker up - - # Tender Scraper (Optional) - scraper: - build: - context: . - dockerfile: Dockerfile - container_name: tm_scraper - restart: unless-stopped - command: ["/scraper"] # Assuming we'll create a scraper binary - environment: - - TM_DATABASE_MONGODB_URI=mongodb://admin:password@mongodb:27017/tender_management?authSource=admin - - TM_CACHE_REDIS_HOST=redis - - TM_CACHE_REDIS_PASSWORD=password - - TM_QUEUE_RABBITMQ_URL=amqp://admin:password@rabbitmq:5672/ - - TM_LOGGING_LEVEL=info - depends_on: - - mongodb - - redis - - rabbitmq - volumes: - - ./configs:/configs:ro - networks: - - tender_network - profiles: - - scraper # Only start with: docker-compose --profile scraper up - - # Nginx Reverse Proxy (Optional - for production) - nginx: - image: nginx:alpine - container_name: tm_nginx - restart: unless-stopped - ports: - - "80:80" - - "443:443" - volumes: - - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - - ./nginx/ssl:/etc/nginx/ssl:ro - depends_on: - - api - networks: - - tender_network - profiles: - - production - -volumes: - mongodb_data: - driver: local - redis_data: - driver: local - rabbitmq_data: - driver: local - elasticsearch_data: - driver: local - -networks: - tender_network: - driver: bridge - ipam: - config: - - subnet: 172.20.0.0/16 \ No newline at end of file