asotog
9/29/2019 - 7:26 PM

java app setup

  • Dockerfile
FROM adoptopenjdk/openjdk8-openj9:alpine-slim
ENV FILE_SYSTEM_LOCATION /var/app/data
VOLUME $FILE_SYSTEM_LOCATION
RUN mkdir -p $FILE_SYSTEM_LOCATION

COPY ./build/libs/*.jar service.jar
CMD java $JAVA_OPTS -jar -noverify -XX:TieredStopAtLevel=1 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Xshareclasses:nonfatal -Xquickstart -Dspring.profiles.active=docker service.jar
  • docker-compose.yml
version: '3'

services:

  app:
    build: .
    ports:
      - 8080:8080
    networks:
      - app
    depends_on:
      - mongo
    environment:
      CORS_ALLOWED_ORIGINS: http://localhost:8000,http://localhost:9000
      UNLEASH_API_URL: http://unleash:4242/api/

  mongo:
    image: bitnami/mongodb
    ports:
      - 27017:27017
    networks:
      - app
    environment:
      MONGODB_ROOT_PASSWORD: rootPassword
      MONGODB_DATABASE: app
      MONGODB_USERNAME: username
      MONGODB_PASSWORD: password
    volumes:
      - mongodb_data:/bitnami

  keycloak:
    image: jboss/keycloak:4.8.3.Final
    ports:
      - 9080:9080
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: keycloak-db
      DB_DATABASE: keycloak
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: admin
      KEYCLOAK_IMPORT: /tmp/realm/test-realm.json
    networks:
      - app
    depends_on:
      - keycloak-db
    volumes:
      - ./docker/keycloak/realm:/tmp/realm
    command:
      - "-b 0.0.0.0"
      - "-Djboss.http.port=9080"
      - "-Dkeycloak.profile.feature.admin_fine_grained_authz=enabled"

  keycloak-db:
    image: postgres:11
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password
    networks:
      - app

  unleash:
    image: unleashorg/unleash-server:3.2
    ports:
      - "4242:4242"
    environment:
      DATABASE_URL: postgres://postgres:unleash@unleash-db/postgres
    depends_on:
      - unleash-db
    command: >
      sh -c "
        while ! nc -z unleash-db 5432; do
          echo 'Postgres is unavailable.'
          sleep 1
        done
        npm run start"
    networks:
      - app

  unleash-db:
    image: postgres:10-alpine
    networks:
      - app
    volumes:
      - unleash_data:/var/lib/postgresql/data

networks:
  app:

volumes:
  mongodb_data:
  postgres_data:
  unleash_data: