services: strapi: restart: always build: ./strapi expose: - 1337 ports: - 1337:1337 environment: NODE_ENV: production DATABASE_CLIENT: postgres DATABASE_HOST: db DATABASE_PASSWORD: ${POSTGRES_PASSWORD} DATABASE_USERNAME: ${POSTGRES_USER} HOST: 0.0.0.0 PORT: 1337 APP_KEYS: ${STRAPI_APP_KEYS} API_TOKEN_SALT: ${STRAPI_TOKEN_SALT} ADMIN_JWT_SECRET: ${STRAPI_ADMIN_JWT_SECRET} TRANSFER_TOKEN_SALT: ${STRAPI_TRANSFER_TOKEN_SALT} JWT_SECRET: ${STRAPI_JWT_SECRET} hostname: content.fefan.fr depends_on: - db networks: fefan: aliases: - fefan-backend volumes: - strapi-data:/app next: restart: always build: context: ./next expose: - 3000 ports: - 3000:3000 environment: NEXT_PUBLIC_CONTENT_URI: ${NEXT_PUBLIC_IMG_URI} NEXT_PUBLIC_IMG_URI: ${NEXT_PUBLIC_IMG_URI} NEXT_PUBLIC_ORIGIN: ${NEXT_PUBLIC_ORIGIN} NEXT_PRIVATE_CONTENT_URI: http://fefan-backend:1337/api NEXT_PRIVATE_IMG_URI: http://fefan-backend:1337 depends_on: - strapi networks: - fefan db: restart: always image: postgres expose: - 5432 environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} networks: - fefan volumes: - db-data:/var/lib/postgresql/18/main networks: fefan: driver: bridge volumes: db-data: {} strapi-data: {} certbot-data: {} certbot-config: {} http-well-known: {}