# DOMAIN=example.com docker stack deploy -c calendso.yml calendso x-calendso: &calendso environment: - VERSION=${VERSION:-v4.7.8} - NODE_ENV=production - POSTGRES_USER=calendso - POSTGRES_PASSWORD=myp@ssw0rd - POSTGRES_DB=calendso - DATABASE_URL=postgresql://calendso:myp@ssw0rd@postgres:5432/calendso - NEXT_PUBLIC_WEBAPP_URL=${SCHEME:-https}://${DOMAIN:-calendso.localhost} - NEXT_PUBLIC_WEBSITE_URL=${SCHEME:-https}://${DOMAIN:-calendso.localhost} - NEXT_PUBLIC_API_V2_URL=${SCHEME:-https}://${DOMAIN:-calendso.localhost}/api/v2 - NEXTAUTH_URL=${SCHEME:-https}://${DOMAIN:-calendso.localhost} - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-mys3cr3t} # openssl rand -base64 32 - NEXT_PUBLIC_IS_E2E=true - MS_GRAPH_CLIENT_ID=${MS_GRAPH_CLIENT_ID} - MS_GRAPH_CLIENT_SECRET=${MS_GRAPH_CLIENT_SECRET} - ZOOM_CLIENT_ID=${ZOOM_CLIENT_ID} - ZOOM_CLIENT_SECRET=${ZOOM_CLIENT_SECRET} - EMAIL_FROM=${SMTP_FROM:-noreply@example.com} - EMAIL_SERVER_HOST=${SMTP_HOST:-smtp.example.com} - EMAIL_SERVER_PORT=${SMTP_PORT:-587} - EMAIL_SERVER_USER=${SMTP_USER:-email_user} - EMAIL_SERVER_PASSWORD=${SMTP_PASSWORD:-password} - CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY:-mys3cr3t} # openssl rand -base64 24 - CALCOM_TELEMETRY_DISABLED=${CALCOM_TELEMETRY_DISABLED:-1} - GOOGLE_API_CREDENTIALS=${GOOGLE_API_CREDENTIALS} - STACK_NAME={{ index .Service.Labels "com.docker.stack.namespace" }} - DOMAIN=${DOMAIN:-calendso.localhost} services: docker: <<: *calendso image: docker:dind entrypoint: /bin/ash command: - -c - | docker image inspect calendso:$${DOMAIN} && exit 0 > /dev/null 2>&1 apk add git git clone https://github.com/calcom/docker cd docker git checkout $${VERSION} git submodule update --init sed -i -e 's/session.data.hasValidLicense/true/g' calcom/packages/features/ee/common/components/LicenseRequired.tsx DOCKER_BUILDKIT=0 docker build \ --build-arg NEXT_PUBLIC_WEBAPP_URL=$${NEXT_PUBLIC_WEBAPP_URL} \ --build-arg NEXT_PUBLIC_API_V2_URL=$${NEXT_PUBLIC_API_V2_URL} \ --build-arg CALCOM_TELEMETRY_DISABLED=$${CALCOM_TELEMETRY_DISABLED} \ --build-arg NEXTAUTH_SECRET=$${NEXTAUTH_SECRET} \ --build-arg CALENDSO_ENCRYPTION_KEY=$${CALENDSO_ENCRYPTION_KEY} \ --build-arg DATABASE_URL=$${DATABASE_URL} \ --network $${STACK_NAME}_internal \ --no-cache -t calendso:$${DOMAIN} . volumes: - /var/run/docker.sock:/var/run/docker.sock deploy: restart_policy: condition: on-failure networks: - internal calendso: <<: *calendso image: calendso:${DOMAIN-calendso.localhost} deploy: labels: - traefik.enable=true - traefik.http.routers.calendso-${NUMBER:-1}.rule=Host(`${DOMAIN:-calendso.localhost}`) - traefik.http.routers.calendso-${NUMBER:-1}.entrypoints=${SCHEME:-https} - traefik.http.routers.calendso-${NUMBER:-1}.service=calendso-${NUMBER:-1} - traefik.http.routers.calendso-${NUMBER:-1}.tls.certresolver=letsencrypt - traefik.http.services.calendso-${NUMBER:-1}.loadbalancer.server.port=3000 networks: - internal - traefik postgres: image: postgres:14-alpine environment: - POSTGRES_DB=calendso - POSTGRES_USER=calendso - POSTGRES_PASSWORD=myp@ssw0rd healthcheck: test: ["CMD", "pg_isready", "-U", "calendso", "-d", "calendso"] volumes: - ${VOLUME_PATH}postgres:/var/lib/postgresql/data networks: - internal - traefik volumes: postgres: networks: internal: driver: overlay attachable: true traefik: external: true name: traefik-net