version: "3" services: uoj-db: build: context: ./db/ dockerfile: Dockerfile container_name: uoj-db restart: always volumes: - ./uoj_data/db/mysql:/var/lib/mysql environment: - MYSQL_DATABASE=app_uoj233 - MYSQL_ROOT_PASSWORD=root phpmyadmin: image: phpmyadmin restart: always ports: - 28080:80 environment: - PMA_ARBITRARY=1 uoj-judger: build: context: ./judger/ dockerfile: Dockerfile args: - USE_MIRROR=1 container_name: uoj-judger restart: always stdin_open: true tty: true cap_add: - SYS_PTRACE volumes: - ./uoj_data/judger/log:/opt/uoj_judger/log environment: - UOJ_PROTOCOL=http - UOJ_HOST=uoj-web - JUDGER_NAME=compose_judger - JUDGER_PASSWORD=_judger_password_ - SOCKET_PORT=2333 - SOCKET_PASSWORD=_judger_socket_password_ uoj-web: build: context: ./ dockerfile: web/Dockerfile args: - USE_MIRROR=1 container_name: uoj-web restart: always stdin_open: true tty: true cap_add: - SYS_PTRACE depends_on: - uoj-db - uoj-judger volumes: - ./uoj_data/web/data:/var/uoj_data - ./uoj_data/web/storage:/opt/uoj/web/app/storage ports: - "80:80" environment: - UOJ_PROTOCOL=http - DATABASE_HOST=uoj-db - DATABASE_PASSWORD=root - JUDGER_SOCKET_PORT=2333 - JUDGER_SOCKET_PASSWORD=_judger_socket_password_ - SALT_0=salt_0 - SALT_1=salt_1 - SALT_2=salt_2 - SALT_3=salt_3