I'm trying to build and run docker-compose with spring-boot and MySQL. At the same time I want application.properties to be defined not in project but in docker-compose. When I build and run docker-compose file, the container works but when I try to go to the server with http://localhost:8080/investor/, this site can't be reached. I will be grateful for any help to find where the problem is.
My structure of files:

My docker-compose.yml:
version: "3"
services:
mysqldb:
image: mysql
restart: unless-stopped
env_file: ./.env
environment:
- MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
- MYSQL_DATABASE=$MYSQLDB_DATABASE
ports:
- "${MYSQLDB_LOCAL_PORT}:${MYSQLDB_DOCKER_PORT}"
volumes:
- db:/var/lib/mysql
app:
depends_on:
- mysqldb
build: .
restart: on-failure
env_file: ./.env
ports:
- "${SPRING_LOCAL_PORT}:${SPRING_DOCKER_PORT}"
environment:
SPRING_APPLICATION_JSON: '{
"spring.datasource.url" : "jdbc:mysql://mysqldb:$MYSQLDB_DOCKER_PORT/$MYSQLDB_DATABASE?useSSL=false",
"spring.datasource.username" : "$MYSQLDB_USER",
"spring.datasource.password" : "$MYSQLDB_ROOT_PASSWORD",
"spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL5InnoDBDialect",
"spring.jpa.hibernate.ddl-auto" : "update"
}'
volumes:
- .m2:/root/.m2
stdin_open: true
tty: true
volumes:
db:
My .env:
MYSQLDB_USER=root
MYSQLDB_ROOT_PASSWORD=123456
MYSQLDB_DATABASE=investor
MYSQLDB_LOCAL_PORT=3307
MYSQLDB_DOCKER_PORT=3306
SPRING_LOCAL_PORT=6868
SPRING_DOCKER_PORT=8080
My Dockerfile:
FROM maven:3.8.6-openjdk-18
WORKDIR /investor-app
COPY . .
RUN mvn clean install
CMD mvn spring-boot:run
My pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ensei</groupId>
<artifactId>InvestmentCalculator</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>InvestmentCalculator</name>
<description>Tool for calculation of benefits from investment projects</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
My Controller.class:
package com.ensei.InvestmentCalculator.controller;
import com.ensei.InvestmentCalculator.model.InvestmentManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@Controller
@RequestMapping("investor")
public class MyController {
@Autowired
private InvestmentManager manager;
@GetMapping
public String menu(){
return "menu";
}
@GetMapping("/add")
public String add(Model model){
return "add";
}
@PostMapping ("/add/{name}")
public String addDone(Model model, @RequestParam String name, String initialInvestment,
String annuity, String differentCashFlow, String period,
String customDiscountRate) throws IOException {
try {
manager.addInvestmentProject(name, initialInvestment, annuity, differentCashFlow, period, customDiscountRate);
} catch (Exception e) {
return "exceptions/incorrectData";
}
model.addAttribute("name",name);
return "addDone";
}
@GetMapping("/read")
public String read(Model model){
model.addAttribute("projects",manager.readInvestmentProjects());
return "read";
}
@GetMapping("/update")
public String update(Model model){
return "update";
}
@PostMapping ("/update/{name}")
public String updateDone(Model model, @RequestParam String name, String initialInvestment,
String annuity, String differentCashFlow, String period,
String customDiscountRate) throws IOException {
try {
manager.updateInvestmentProject(name,initialInvestment,annuity,differentCashFlow,period,customDiscountRate);
} catch (Exception e){
return "exceptions/incorrectData";
}
model.addAttribute("name",name);
return "updateDone";
}
@GetMapping("/delete")
public String delete(){
return "delete";
}
@PostMapping ("/delete/{name}")
public String deleteDone(Model model, @RequestParam String name){
try {
manager.deleteInvestmentProject(name);
} catch (Exception e){
return "exceptions/incorrectProject";
}
model.addAttribute("name",name);
return "deleteDone";
}
@PostMapping(value = {"/add","/update"})
public String absentName(){
return "exceptions/absentName";
}
}
My application.properties file is empty.