services: peddlers-of-ketran: profiles: [prod] container_name: ketr.ketran build: context: . dockerfile: Dockerfile restart: always env_file: - .env ports: - 8930:8930 volumes: - ./db:/db:rw - ./server/routes:/server/routes:ro working_dir: /server environment: - VITE_basePath=/ketr.ketran peddlers-of-ketran-dev: profiles: [dev] container_name: ketr.ketran.dev hostname: peddlers-server build: context: . dockerfile: Dockerfile.dev volumes: - ./server:/server:rw - ./db:/db:rw command: ["sh", "-c", "cd /server && npm install --no-audit --no-fund --silent && npm rebuild sqlite3 && npm run start:dev"] ports: - 8930:8930 environment: - NODE_ENV=development - VITE_basePath=/ketr.ketran networks: - peddlers-network peddlers-client: profiles: [dev] container_name: ketr.client hostname: peddlers-client build: context: . dockerfile: Dockerfile working_dir: /client volumes: - ./client:/client:rw - ./certs:/certs:ro ports: - 3001:3000 environment: - BROWSER=none - HTTPS=true - HOST=0.0.0.0 - WDS_SOCKET_HOST=0.0.0.0 - WDS_SOCKET_PORT=0 - VITE_API_BASE=/ketr.ketran # Provide paths to TLS key/cert inside the container so Vite can present # a certificate for the external hostname (e.g. battle-linux.ketrenos.com). - VITE_HTTPS_KEY=/certs/battle.key - VITE_HTTPS_CERT=/certs/battle.crt env_file: - .env # Install deps then run vite directly to avoid using the npm wrapper which # was receiving SIGTERM in the container and making the service appear to # restart repeatedly. command: ["bash", "-c", "cd /client && npm install --legacy-peer-deps --silent --no-audit --no-fund && ./node_modules/.bin/vite --host"] networks: - peddlers-network networks: peddlers-network: driver: bridge