Я недавно начал пытаться использовать docker более продвинутым способом. Я уже использовал его для создания mysql серверных и postgres серверных контейнеров. На данный момент у меня есть тестовый проект Spring, который запускается нормально при запуске. Но я попытался создать то же самое с docker, он успешно создает mysql сервер и создает экземпляр tomcat, но он не go сам проект.
Содержимое Dockerfile:
FROM tomcat:9-jre11
ENV CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Sao_Paulo -Xms1024m -Xmx2560m -XX:+UseParallelGC -XX:-OmitStackTraceInFastThrow"
ADD ./smartCircuit/target/*.war $CATALINA_HOME/webapps/
EXPOSE 8080
CMD catalina.sh run;
docker -compose.yaml content:
version: '3.5'
services:
db:
image: mysql:5.7
restart: always
container_name: mysql-container
environment:
MYSQL_DATABASE: 'smart_circuit'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
ports:
# <Port exposed> : < MySQL Port running inside container>
- '3307:3306'
expose:
# Opens port 3306 on the container
- '3306'
# Where our data will be persisted
volumes:
- my-db:/var/lib/mysql
web:
build: .
container_name: tomcat
ports:
- 8080:8080
environment:
DB_URL: jdbc:mysql://mysql-container:3306/smart_circuit?useSSL=false
DB_USER: user
DB_PASSWORD: password
links:
- db:mysql-container
# Names our volume
volumes:
my-db:
Я ожидаю, что мое приложение запустится и будет доступно, когда я использую команду "sudo docker -compose up - строить». Например, у меня есть один сопоставленный «проект» RestController с методом сопоставленного «найти», который получает идентификатор и либо извлекает его при обнаружении, либо выдает исключение NotFoundException. Когда я запускаю его через InteliJ без docker, он работает, но когда я запускаю его через docker, я получаю возврат Tomcat 404 Not Found. По сути, я могу без проблем получить доступ к экземпляру mysql, и Tomcat работает, но сам проект не развертывается.