services: mongo: image: mongo ports: - '27017:27017' command: mongod --replSet rs0 setup: image: mongo depends_on: - mongo restart: on-failure entrypoint: [ 'bash', '-c', # This will try to initiate the replica set, until it succeeds twice (i.e. until the replica set is already initialized) 'mongosh --host mongo:27017 --eval ''try {rs.initiate();} catch (err) { if(err.codeName !== "AlreadyInitialized") throw err };''' ] mailpit: restart: unless-stopped image: axllent/mailpit ports: - '1025:1025' - '8025:8025' api: restart: unless-stopped depends_on: - mongo - mailpit image: fcc-api env_file: - .env environment: # The api cannot connect to mongodb or mailpit via localhost from inside the # container, so we have to override these variables. - MONGOHQ_URL=mongodb://mongo:27017/freecodecamp?directConnection=true - MAILHOG_HOST=mailpit - HOST=0.0.0.0 ports: - '3000:3000'