version: '3' services: shlink_nginx: container_name: shlink_nginx image: nginx:1.19.6-alpine ports: - "8000:80" volumes: - ./:/home/shlink/www - ./docs:/home/shlink/www/public/docs - ./data/infra/vhost.conf:/etc/nginx/conf.d/default.conf links: - shlink_php shlink_php: container_name: shlink_php build: context: . dockerfile: ./data/infra/php.Dockerfile ports: - '8888:8888' volumes: - ./:/home/shlink/www - ./data/infra/php.ini:/usr/local/etc/php/php.ini links: - shlink_db_mysql - shlink_db_postgres - shlink_db_maria - shlink_db_ms - shlink_redis - shlink_redis_acl - shlink_mercure - shlink_mercure_proxy - shlink_rabbitmq environment: LC_ALL: C extra_hosts: - 'host.docker.internal:host-gateway' shlink_swoole_proxy: container_name: shlink_swoole_proxy image: nginx:1.19.6-alpine ports: - "8002:80" volumes: - ./:/home/shlink/www - ./data/infra/swoole_proxy_vhost.conf:/etc/nginx/conf.d/default.conf links: - shlink_swoole shlink_swoole: container_name: shlink_swoole build: context: . dockerfile: ./data/infra/swoole.Dockerfile ports: - "8080:8080" - "9001:9001" volumes: - ./:/home/shlink - ./data/infra/php.ini:/usr/local/etc/php/php.ini links: - shlink_db_mysql - shlink_db_postgres - shlink_db_maria - shlink_db_ms - shlink_redis - shlink_redis_acl - shlink_mercure - shlink_mercure_proxy - shlink_rabbitmq environment: LC_ALL: C extra_hosts: - 'host.docker.internal:host-gateway' shlink_roadrunner: container_name: shlink_roadrunner build: context: . dockerfile: ./data/infra/roadrunner.Dockerfile ports: - "8800:8080" volumes: - ./:/home/shlink - ./data/infra/php.ini:/usr/local/etc/php/php.ini links: - shlink_db_mysql - shlink_db_postgres - shlink_db_maria - shlink_db_ms - shlink_redis - shlink_redis_acl - shlink_mercure - shlink_mercure_proxy - shlink_rabbitmq environment: LC_ALL: C extra_hosts: - 'host.docker.internal:host-gateway' shlink_db_mysql: container_name: shlink_db_mysql image: mysql:8.0 ports: - "3307:3306" volumes: - ./:/home/shlink/www - ./data/infra/database:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: shlink shlink_db_postgres: container_name: shlink_db_postgres image: postgres:12.2-alpine ports: - "5433:5432" volumes: - ./:/home/shlink/www - ./data/infra/database_pg:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: root POSTGRES_DB: shlink PGDATA: /var/lib/postgresql/data/pgdata shlink_db_maria: container_name: shlink_db_maria image: mariadb:10.7 ports: - "3308:3306" volumes: - ./:/home/shlink/www - ./data/infra/database_maria:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: shlink MYSQL_INITDB_SKIP_TZINFO: 1 shlink_db_ms: container_name: shlink_db_ms image: mcr.microsoft.com/mssql/server:2019-latest ports: - "1433:1433" environment: ACCEPT_EULA: Y SA_PASSWORD: "Passw0rd!" shlink_redis: container_name: shlink_redis image: redis:6.2-alpine ports: - "6380:6379" shlink_redis_acl: container_name: shlink_redis_acl image: redis:6.2-alpine command: ["redis-server", "/usr/local/etc/redis/redis.conf"] ports: - "6382:6379" volumes: - ./data/infra/redis/redis-acl.conf:/usr/local/etc/redis/redis.conf shlink_mercure_proxy: container_name: shlink_mercure_proxy image: nginx:1.19.6-alpine ports: - "8001:80" volumes: - ./:/home/shlink/www - ./data/infra/mercure_proxy_vhost.conf:/etc/nginx/conf.d/default.conf links: - shlink_mercure shlink_mercure: container_name: shlink_mercure image: dunglas/mercure:v0.14 ports: - "3080:80" environment: SERVER_NAME: ":80" MERCURE_PUBLISHER_JWT_KEY: mercure_jwt_key_long_enough_to_avoid_error MERCURE_SUBSCRIBER_JWT_KEY: mercure_jwt_key_long_enough_to_avoid_error MERCURE_EXTRA_DIRECTIVES: "cors_origins https://app.shlink.io http://localhost:3000 http://127.0.0.1:3000" shlink_rabbitmq: container_name: shlink_rabbitmq image: rabbitmq:3.9-management-alpine ports: - "15672:15672" - "5672:5672" environment: RABBITMQ_DEFAULT_USER: "rabbit" RABBITMQ_DEFAULT_PASS: "rabbit"