version: '3.4'

services:
  php-nginx:
    container_name: php-container
    image: jianboy/php:8
    build:
      context: .
      dockerfile: ./Dockerfile
    restart: unless-stopped
    volumes:
      - ./src:/var/www/html
      # - ./apache/:/etc/apache2/sites-enabled/
    ports:
      - 9000:9000
    networks:
      - app-network
    depends_on:
      - mysql
      - redis

  adminer:
    image: adminer:latest
    ports:
      - 8080:8080
    environment:
      ADMINER_DEFAULT_SERVER: mysql
    depends_on:
      - mysql
      - postgres
      - mariadb
    networks:
      - app-network

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:5.2.1-fpm-alpine
    ports:
      - '8080:80'
    restart: always
    environment:
      PMA_HOST: mysql
      # PMA_ARBITRARY: 1
      MYSQL_ROOT_PASSWORD: root1234
    depends_on:
      - mysql
    networks:
      - app-network

  mysql:
    container_name: mysql-container
    image: mysql:8.0
    #     image: mysql:5.6
    restart: unless-stopped
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: laravel
      MYSQL_ROOT_PASSWORD: laravel
    ports:
      - 3306:3306
    networks:
      - app-network

  postgres:
    # image: 'registry.cn-hangzhou.aliyuncs.com/kennylee/postgresql:12.4'
    container_name: db_postgres
    image: postgres:16.0
    environment:
      POSTGRES_DB: chat
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root1234
    ports:
      - 5432:5432
    volumes:
      - postgres-data:/var/lib/postgresql/data
    restart: unless-stopped
    networks:
      - app-network
    logging:
      driver: 'json-file'
      options:
        max-size: '12m'
        max-file: '5'

  mariadb:
    container_name: mariadb_container
    image: mariadb:10.3
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root1234
      MYSQL_DATABASE: chat
      MYSQL_USER: lyq
      MYSQL_PASSWORD: lyq121212
    volumes:
      - ./mariadb:/var/lib/mysql
      # - ./dev/mariadb:/docker-entrypoint-initdb.d
    networks:
      - app-network

  redis:
    image: redis:7.2.3
    container_name: redis-container
    restart: unless-stopped
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - 6379:6379
    volumes:
      - ./redis:/data
    networks:
      - app-network
    # command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
    logging:
      driver: 'json-file'
      options:
        max-size: '30m'
        max-file: '1'

  redis-commander:
    container_name: infisical-dev-redis-commander
    image: rediscommander/redis-commander:latest
    restart: always
    depends_on:
      - redis
    environment:
      - REDIS_HOSTS=local:redis:6379
    ports:
      - "8085:8081"
    networks:
      - infisical-dev

  mongo:
    container_name: infisical-mongo
    image: mongo:latest
    #     image: mongo:7.0.5-rc0
    #     image: registry.cn-hangzhou.aliyuncs.com/kennylee/mongo-express
    restart: always
    env_file: .env
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
    volumes:
      - mongo-data:/data/db
    networks:
      - infisical
    ports:
      - "27017:27017"
    logging:
      driver: 'json-file'
      options:
        max-size: '30m'
        max-file: '1'

  mongo-express:
    container_name: infisical-dev-mongo-express
    image: mongo-express
    restart: always
    depends_on:
      - mongo
    env_file: .env
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=root
      - ME_CONFIG_MONGODB_ADMINPASSWORD=example
      - ME_CONFIG_MONGODB_URL=mongodb://root:example@mongo:27017/
    ports:
      - 8081:8081
    networks:
      - infisical-dev

volumes:
  mariadb-data:
  mysql-data:
  postgres-data:
  mongo-data:
    driver: local

networks:
  app-network:
    driver: bridge