我最近开始尝试以更高级的方式使用docker。我已经用它来创建mysql服务器和postgres服务器容器。目前,我有一个Spring测试项目,该项目在启动时可以正常运行。但是我尝试用docker实例化它,它成功创建了一个mysql服务器,并实例化了一个tomcat,但它并没有启动项目本身。
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内容:
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 --build”时,我期望我的应用程序能够启动并可以访问。例如,我有一个RestController映射为“ project”,而一个方法映射为“ find”,该方法接收一个id并在找到时检索它或抛出NotFoundException。 当我通过没有docker的InteliJ运行它时,它可以工作,但是当我通过docker启动它时,我得到了Tomcat 404 Not Found返回。 基本上,我可以毫无问题地访问mysql实例,并且tomcat可以正常工作,但是项目本身并未部署。