From 77d7ffd9a7a33f08109a2db8a35e4094b2761c51 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 17 Mar 2022 11:34:55 +0100 Subject: refactor(web): Update Docker deployment for new web API This change updates the Docker deployment configuration for the new web API implemented in Kotlin. The new API migrates to Postgres. Furthermore, with this change, we move the Dockerfiles to their corresponding module. --- .dockerignore | 6 ++-- Dockerfile | 18 ------------ docker-compose.override.yml | 29 +++++++++++------- docker-compose.prod.yml | 2 +- docker-compose.yml | 52 +++++++++++++-------------------- opendc-web/opendc-web-api/Dockerfile | 17 +++++++++++ opendc-web/opendc-web-runner/Dockerfile | 18 ++++++++++++ 7 files changed, 78 insertions(+), 64 deletions(-) delete mode 100644 Dockerfile create mode 100644 opendc-web/opendc-web-api/Dockerfile create mode 100644 opendc-web/opendc-web-runner/Dockerfile diff --git a/.dockerignore b/.dockerignore index e4d96f71..bbc8efcc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,5 @@ -Dockerfile - .git - +.env .idea/ **/out *.iml @@ -10,3 +8,5 @@ Dockerfile .gradle **/build **/node_modules + +**/Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 771ed2ed..00000000 --- a/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM openjdk:17-slim -MAINTAINER OpenDC Maintainers - -# Obtain (cache) Gradle wrapper -COPY gradlew /app/ -COPY gradle /app/gradle -WORKDIR /app -RUN ./gradlew --version - -# Build project -COPY ./ /app/ -RUN ./gradlew --no-daemon :installDist - -FROM openjdk:17-slim -COPY --from=0 /app/build/install /opt/ -COPY --from=0 /app/traces /opt/opendc/traces -WORKDIR /opt/opendc -CMD bin/opendc-web-runner diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 5d104557..314adcb1 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -10,29 +10,38 @@ services: NEXT_PUBLIC_API_BASE_URL: http://localhost:8081 api: - build: opendc-web/opendc-web-api + build: + context: . + dockerfile: opendc-web/opendc-web-api/Dockerfile ports: - "8081:80" environment: SENTRY_ENVIRONMENT: "development" - simulator: - build: . + runner: + build: + context: . + dockerfile: opendc-web/opendc-web-runner/Dockerfile environment: SENTRY_ENVIRONMENT: "development" - mongo: + postgres: ports: - - "27017:27017" + - "5432:5432" - mongo-express: - image: mongo-express + pgadmin: + image: dpage/pgadmin4 restart: on-failure networks: - backend depends_on: - - mongo + - postgres ports: - - "8082:8081" + - "5050:80" environment: - ME_CONFIG_MONGODB_URL: "mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongo:27017/" + PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} + PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} + PGADMIN_CONFIG_SERVER_MODE: 'False' + +volumes: + pgadmin: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index c4f43298..1206ff9c 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -14,6 +14,6 @@ services: environment: SENTRY_ENVIRONMENT: "production" - simulator: + runner: environment: SENTRY_ENVIRONMENT: "production" diff --git a/docker-compose.yml b/docker-compose.yml index 52209a5b..faaecc03 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,23 +19,16 @@ services: networks: - backend depends_on: - - mongo + - postgres environment: - - MONGO_INITDB_ROOT_USERNAME - - MONGO_INITDB_ROOT_PASSWORD - - MONGO_INITDB_DATABASE - - OPENDC_DB - - OPENDC_DB_USERNAME - - OPENDC_DB_PASSWORD - - OPENDC_DB_HOST=mongo - - OPENDC_FLASK_SECRET - - AUTH0_DOMAIN=${OPENDC_AUTH0_DOMAIN} - - AUTH0_AUDIENCE=${OPENDC_AUTH0_AUDIENCE} - - AUTH0_DOCS_CLIENT_ID=${OPENDC_AUTH0_DOCS_CLIENT_ID} - - SENTRY_DSN=${OPENDC_API_SENTRY_DSN-} - - SENTRY_ENVIRONMENT + OPENDC_DB_USERNAME: ${OPENDC_DB_USERNAME:?No database username specified} + OPENDC_DB_PASSWORD: ${OPENDC_DB_PASSWORD:?No database password specified} + OPENDC_DB_URL: jdbc:postgresql://postgres:5432/opendc + OPENDC_AUTH0_DOMAIN: ${OPENDC_AUTH0_DOMAIN:?No Auth0 domain specified} + OPENDC_AUTH0_AUDIENCE: ${OPENDC_AUTH0_AUDIENCE:?No Auth0 audience specified} + SENTRY_DSN: ${OPENDC_API_SENTRY_DSN-} - simulator: + runner: image: atlargeresearch/opendc:v2.1 restart: on-failure networks: @@ -47,31 +40,26 @@ services: source: ./traces target: /opt/opendc/traces environment: - - OPENDC_API_URL=${OPENDC_API_BASE_URL} - - AUTH0_DOMAIN=${OPENDC_AUTH0_DOMAIN} - - AUTH0_AUDIENCE=${OPENDC_AUTH0_AUDIENCE} - - AUTH0_CLIENT_ID=${OPENDC_AUTH0_CLIENT_ID_RUNNER} - - AUTH0_CLIENT_SECRET=${OPENDC_AUTH0_CLIENT_SECRET_RUNNER} - - SENTRY_DSN=${OPENDC_SIMULATOR_SENTRY_DSN-} - - SENTRY_ENVIRONMENT + OPENDC_API_URL: ${OPENDC_API_BASE_URL:-http://web:8080} + AUTH0_DOMAIN: ${OPENDC_AUTH0_DOMAIN:?No Auth0 domain specified} + AUTH0_AUDIENCE: ${OPENDC_AUTH0_AUDIENCE:?No Auth0 audience specified} + AUTH0_CLIENT_ID: ${OPENDC_AUTH0_CLIENT_ID_RUNNER:?No client id for runner} + AUTH0_CLIENT_SECRET: ${OPENDC_AUTH0_CLIENT_SECRET_RUNNER:?No client secret for runner} + SENTRY_DSN: ${OPENDC_SIMULATOR_SENTRY_DSN-} - mongo: - build: database + postgres: + image: postgres restart: on-failure environment: - - MONGO_INITDB_ROOT_USERNAME - - MONGO_INITDB_ROOT_PASSWORD - - MONGO_INITDB_DATABASE - - OPENDC_DB - - OPENDC_DB_USERNAME - - OPENDC_DB_PASSWORD + POSTGRES_USER: ${OPENDC_DB_USERNAME} + POSTGRES_PASSWORD: ${OPENDC_DB_PASSWORD} networks: - backend volumes: - - mongo-volume:/data/db + - postgres:/var/lib/postgresql/data volumes: - mongo-volume: + postgres: networks: backend: {} diff --git a/opendc-web/opendc-web-api/Dockerfile b/opendc-web/opendc-web-api/Dockerfile new file mode 100644 index 00000000..ff300170 --- /dev/null +++ b/opendc-web/opendc-web-api/Dockerfile @@ -0,0 +1,17 @@ +FROM openjdk:17-slim +MAINTAINER OpenDC Maintainers + +# Obtain (cache) Gradle wrapper +COPY gradlew /app/ +COPY gradle /app/gradle +WORKDIR /app +RUN ./gradlew --version + +# Build project +COPY ./ /app/ +RUN ./gradlew --no-daemon :opendc-web:opendc-web-api:build + +FROM openjdk:17-slim +COPY --from=0 /app/opendc-web/opendc-web-api/build/quarkus-app /opt/opendc +WORKDIR /opt/opendc +CMD java -jar quarkus-run.jar diff --git a/opendc-web/opendc-web-runner/Dockerfile b/opendc-web/opendc-web-runner/Dockerfile new file mode 100644 index 00000000..771ed2ed --- /dev/null +++ b/opendc-web/opendc-web-runner/Dockerfile @@ -0,0 +1,18 @@ +FROM openjdk:17-slim +MAINTAINER OpenDC Maintainers + +# Obtain (cache) Gradle wrapper +COPY gradlew /app/ +COPY gradle /app/gradle +WORKDIR /app +RUN ./gradlew --version + +# Build project +COPY ./ /app/ +RUN ./gradlew --no-daemon :installDist + +FROM openjdk:17-slim +COPY --from=0 /app/build/install /opt/ +COPY --from=0 /app/traces /opt/opendc/traces +WORKDIR /opt/opendc +CMD bin/opendc-web-runner -- cgit v1.2.3