Lindbrum / SoseExam

Repository for a project to be submitted for the final test of Service-Oriented Software Engineering course (A.A. 2022-2023) held at the University of L'Aquila by prof. Marco Autili and Doc. Gianluca Filippone.
0 stars 0 forks source link

Setup Docker for microservices #25

Open Lindbrum opened 1 year ago

Lindbrum commented 1 year ago
  1. Setup a Dockerfile for each microservice, including the gateway, config server, discovery server (Eureka).
  2. Setup a "docker-compose.yml" in the root of the project
  3. Setup environment variables for each microservice through Dockerfiles and docker-compose.yml
Lindbrum commented 1 year ago

Example of docker-compose.yml from doc. Filippone case-study:

services:
  openjob-mysql:
    image: mysql:latest
    volumes:
      - mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root

  openjob-phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - "8081:80"
    links:
      - "openjob-mysql:db"
    depends_on:
      - openjob-mysql

  config-server:
    build: ./config-server
    ports:
      - "8888:8888"

  discovery-server:
    build: ./discovery-server
    ports:
      - "8761:8761"
    depends_on:
      - config-server

  gateway:
    build: ./gateway
    ports:
      - "9000:9000"
    environment:
      CONFIG_SERVER_HOST: config-server
      CONFIG_SERVER_PORT: 8888
      EUREKA_SERVER: http://discovery-server:8761/eureka/
    depends_on:
      - config-server
      - discovery-server

  user-microservice:
    build: ./user
    ports:
      - "9044-9049:9044"
    environment:
      CONFIG_SERVER_HOST: config-server
      CONFIG_SERVER_PORT: 8888
      EUREKA_SERVER: http://discovery-server:8761/eureka/
      MYSQL_HOST: openjob-mysql:3306
      MYSQL_DB: user
      MYSQL_USER: root
      MYSQL_PASSWORD: root
    depends_on:
      - config-server
      - discovery-server
      - openjob-mysql

  job-microservice:
    build: ./job
    expose:
      - "9055"
    environment:
      CONFIG_SERVER_HOST: config-server
      CONFIG_SERVER_PORT: 8888
      EUREKA_SERVER: http://discovery-server:8761/eureka/
      MYSQL_HOST: openjob-mysql:3306
      MYSQL_DB: job
      MYSQL_USER: root
      MYSQL_PASSWORD: root
    depends_on:
      - config-server
      - discovery-server
      - openjob-mysql

volumes:
  mysql-data: 
Lindbrum commented 1 year ago

Example of Dockerfile from doc. Filippone case-study (for the gateway in this case):

FROM maven:3.9.2-eclipse-temurin-17-alpine

WORKDIR /gateway-app
COPY  . .

RUN mvn clean install
CMD mvn spring-boot:run