背景:
我试图运行一个由Tomcat和Docker支持的网站。但是,我需要替换database.properties
文件中的一行,以便连接到MySQL容器。
我做了什么:
docker-compose.yaml
:
version: '3.8'
services:
tomcat-web:
build:
context: .
dockerfile: ./Dockerfile.dev
ports:
- 8800:8080
字符串Dockerfile.dev
:
FROM tomcat:8.0-alpine
WORKDIR /usr/local/tomcat
# Copy a shell script and make it executable
COPY --chmod=0755 startup.sh /usr/local/tomcat/bin/startup.sh
# Clean '/usr/local/tomcat/webapps/' in order to allow tomcat to expand web.war
RUN rm -rf /usr/local/tomcat/webapps/*
COPY target/web.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080
CMD ["sh", "/usr/local/tomcat/bin/startup.sh"]
型
删除/usr/local/tomcat/webapps/*
中的所有内容是由https://stackoverflow.com/a/32095790/14418391建议的。startup.sh
(在database.properties
中更改一行并运行catalina.sh):
# Changing port (from port 3306 to port 3311) in database.properties
DB_CONFIG_FILE=/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/database.properties
MYSQL_CONTAINER_PORT=3311
sed -i 's~^database.url=jdbc:mysql://127.0.0.1/database_name.*database.url=jdbc:mysql://127.0.0.1:3311/database_name~' $DB_CONFIG_FILE
sh /usr/local/tomcat/bin/catalina.sh run
型database.properties
:
database.url=jdbc:mysql://127.0.0.1/database_name
型
问题:
网站的docker容器成功运行,但我发现database.properties
保持不变。
期望和问题:
database.properties
(将端口修改为3311):
database.url=jdbc:mysql://127.0.0.1:3311/database_name
型
但是,要实现这一点,我是否应该在sed
命令之前运行catalina.sh,以允许catalina.sh扩展ROOT.WAR,如下所示?
sh /usr/local/tomcat/bin/catalina.sh run
# Changing port (from port 3306 to port 3311) in database.properties
DB_CONFIG_FILE=/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/database.properties
MYSQL_CONTAINER_PORT=3311
sed -i 's~^database.url=jdbc:mysql://127.0.0.1/database_name.*database.url=jdbc:mysql://127.0.0.1:3311/database_name~' $DB_CONFIG_FILE
型
谢谢你,你的帮助非常感谢。
1条答案
按热度按时间i7uaboj41#
要能够在database.properties中更改
database.url
,请将其更改为:字符串
到
型
与此同时,
Dockerfile.dev
中引入了一些小的变化:型
在
docker-compose.yaml
中,环境变量包括:型
这就是
db.env
的内部结构:型
MYSQL_HOST
的值取决于mysql服务名称,该名称在docker-compose. yaml中定义。启动脚本负责更改
database.url
:型