# To execute this docker-compose yml file use docker-compose -f up # Add the "-d" flag at the end for detached execution version: '3.7' services: sonarqube: container_name: ${APP_NAME}_sonarqube image: sonarqube:community depends_on: - sonarqube_db ports: - ${SONARQUBE_PORT}:9000 networks: - sonarnet environment: SONAR_JDBC_URL: jdbc:postgresql://sonarqube_db:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_logs:/opt/sonarqube/logs - sonarqube_temp:/opt/sonarqube/temp sonarqube_db: container_name: ${APP_NAME}_sonarqube_db image: postgres:alpine networks: - sonarnet environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar ports: - ${SONARQUBE_DB_PORT}:5432 volumes: - sonarqube_postgresql:/var/lib/postgresql # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52 - sonarqube_postgresql_data:/var/lib/postgresql/data openapi: container_name: ${APP_NAME}_openapi image: swaggerapi/swagger-ui ports: - ${OPENAPI_PORT}:8080 environment: URL: "http://localhost:8080" rabbitmq: container_name: ${APP_NAME}_rabbitmq image: rabbitmq:management-alpine ports: - ${RABBITMQ_PORT}:5672 - ${RABBITMQ_MANAGEMENT_PORT}:15672 redis: container_name: ${APP_NAME}_redis image: redis:6-alpine ports: - ${REDIS_PORT}:6379 volumes: - redis-data:/var/lib/redis:rw app: container_name: ${APP_NAME}_app build: context: . dockerfile: docker/app/Dockerfile ports: - ${APP_PORT}:8080 environment: DB_HOST: ${DB_HOST} SEND_GRID_KEY: ${SEND_GRID_KEY} REDIS_CONNECTION: ${REDIS_CONNECTION} RABBITMQ_CONNECTION: ${RABBITMQ_CONNECTION} ELASTICSEARCH_CONNECTION: ${ELASTICSEARCH_CONNECTION} depends_on: - elasticsearch - db - redis - rabbitmq elasticsearch: container_name: ${APP_NAME}_elasticsearch image: elasticsearch:6.7.1 ports: - ${ELASTIC_REST}:9200 - ${ELASTIC_NODES}:9300 healthcheck: test: ["CMD", "curl", "-f", "http://elasticsearch:9200"] interval: 3s timeout: 2s retries: 20 db: container_name: ${APP_NAME}_postgresql build: context: docker/postgresql ports: - ${POSTGRESQL_PORT}:5432 environment: POSTGRES_PASSWORD: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_DB: ${DB_PWD} volumes: - ./var/log/postgresql:/var/log/postgresql:rw - db-data:/var/lib/postgresql/data:rw depends_on: - elasticsearch healthcheck: test: [ "CMD", "pg_isready", "-q", "-d", "${DB_NAME}", "-U", "${DB_USER}" ] interval: 3s timeout: 2s retries: 20 networks: sonarnet: driver: bridge volumes: db-data: redis-data: sonarqube_data: sonarqube_extensions: sonarqube_logs: sonarqube_temp: sonarqube_postgresql: sonarqube_postgresql_data: