version: '2.3' services: #### # Speckle Server dependencies ####### postgres: image: 'postgres:14.5-alpine' restart: always environment: POSTGRES_DB: speckle POSTGRES_USER: speckle POSTGRES_PASSWORD: speckle volumes: - ./postgres-data:/var/lib/postgresql/data/ ports: - '127.0.0.1:5432:5432' redis: image: 'redis:7.0-alpine' restart: always volumes: - ./redis-data:/data ports: - '127.0.0.1:6379:6379' minio: image: 'minio/minio' command: server /data --console-address ":9001" restart: always volumes: - ./minio-data:/data ports: - '127.0.0.1:9000:9000' - '127.0.0.1:9001:9001' #### # Speckle Server ####### speckle-frontend-2: image: speckle/speckle-frontend-2:2 restart: always ports: - '127.0.0.1:8080:8080' environment: NUXT_PUBLIC_SERVER_NAME: 'TODO: change' # e.g. 'my-speckle-server' NUXT_PUBLIC_API_ORIGIN: 'TODO: change' # e.g. 'http://127.0.0.1' NUXT_PUBLIC_BASE_URL: 'TODO: change' # e.g. 'http://127.0.0.1' NUXT_PUBLIC_BACKEND_API_ORIGIN: 'http://speckle-server:3000' NUXT_PUBLIC_LOG_LEVEL: 'warn' NUXT_REDIS_URL: 'redis://redis' speckle-server: image: speckle/speckle-server:2 restart: always healthcheck: test: - CMD - node - -e - "try { require('node:http').request({headers: {'Content-Type': 'application/json'}, port:3000, hostname:'127.0.0.1', path:'/graphql?query={serverInfo{version}}', method: 'GET', timeout: 2000 }, (res) => { body = ''; res.on('data', (chunk) => {body += chunk;}); res.on('end', () => {process.exit(res.statusCode != 200 || body.toLowerCase().includes('error'));}); }).end(); } catch { process.exit(1); }" interval: 10s timeout: 10s retries: 3 start_period: 90s ports: - '127.0.0.1:3000:3000' environment: CANONICAL_URL: 'TODO: change' SESSION_SECRET: 'TODO: change' STRATEGY_LOCAL: 'true' LOG_LEVEL: 'info' POSTGRES_URL: 'postgres' POSTGRES_USER: 'speckle' POSTGRES_PASSWORD: 'speckle' POSTGRES_DB: 'speckle' REDIS_URL: 'redis://redis' WAIT_HOSTS: 'postgres:5432, redis:6379, minio:9000' EMAIL: 'false' EMAIL_HOST: 'TODO' EMAIL_PORT: 'TODO' EMAIL_USERNAME: 'TODO' EMAIL_PASSWORD: 'TODO' EMAIL_FROM: 'TODO' EMAIL_SECURE: 'false' S3_ENDPOINT: 'http://minio:9000' S3_ACCESS_KEY: 'minioadmin' S3_SECRET_KEY: 'minioadmin' S3_BUCKET: 'speckle-server' S3_CREATE_BUCKET: 'true' S3_REGION: '' # optional, defaults to 'us-east-1' FILE_SIZE_LIMIT_MB: 100 USE_FRONTEND_2: 'true' FRONTEND_ORIGIN: 'TODO: change' speckle-preview-service: image: speckle/speckle-preview-service:2 restart: always mem_limit: '1000m' memswap_limit: '1000m' environment: LOG_LEVEL: 'info' PG_CONNECTION_STRING: 'postgres://speckle:speckle@postgres/speckle' WAIT_HOSTS: 'postgres:5432' speckle-webhook-service: image: speckle/speckle-webhook-service:2 restart: always environment: LOG_LEVEL: 'info' PG_CONNECTION_STRING: 'postgres://speckle:speckle@postgres/speckle' WAIT_HOSTS: 'postgres:5432' fileimport-service: image: speckle/speckle-fileimport-service:2 restart: always environment: LOG_LEVEL: 'info' PG_CONNECTION_STRING: 'postgres://speckle:speckle@postgres/speckle' WAIT_HOSTS: 'postgres:5432' SPECKLE_SERVER_URL: 'http://speckle-server:3000'