我有以下问题:
我想在docker-compose.yml文件中定义一个环境变量,如下所示:
def __str__(self):
return "Cost solution : " + str(self.cost) + "\nSolution: " + str(self.solution) + "\n\nTable:" + str(self.table)
使用tomcat部署webapp应用程序。我想以下列方式将变量 WEBAPPDB 用于context.xml文件中:
services:
nginx:
image: nginx:1.13
container_name: nginx
restart: always
ports:
- "80:80"
- "9090:9090"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/html:/usr/share/nginx/html
webapp:
build: WebApp
container_name: webapp
environment:
- WEBAPPDB=jdbc:mysql://192.168.101.129:3306/webapp?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
expose:
- "8080"
depends_on:
- nginx
version: '2'
我该怎么做?谢谢你的帮助。
答案 0 :(得分:0)
根据文件Tomcat Configuration Reference
Tomcat配置文件被格式化为无模式XML;分子 和属性区分大小写。 Apache Ant风格的变量 支持替代;名为propname的系统属性 可以使用语法$ {propname}在配置文件中使用。所有 系统属性可用,包括使用-D设置的属性 语法,由JVM和那些自动提供的语法 在$ CATALINA_BASE / conf / catalina.properties文件中配置。
为了使其工作,SELECT
EVENTDETAILID,
SUM(CASE WHEN PRICETYPE = 0 THEN PRICE ELSE 0 END) +
MAX(CASE WHEN PRICETYPE = 1 THEN PRICE ELSE 0 END) AS total
FROM yourTable
GROUP BY
EVENTDETAILID
ORDER BY
EVENTDETAILID;
中的WEBAPPDB
变量应该可用作系统属性。您可以通过多种方式设置系统属性(请参阅Tomcat 7 - where do I set 'system properties'?
)。在您的情况下,您可以在context.xml
文件中设置环境变量JAVA_OPTS
:
docker-compose
答案 1 :(得分:0)
以这种方式工作:
docker-compose.yml :
services:
webapp:
build: webapp
container_name: webapp
environment:
- JAVA_OPTS= -Ddb.url=192.168.101.129 -Ddb.port=3306 -Ddb.username=test -Ddb.password=test
Dockerfile :
FROM bp91/ubuntu16.04-tomcat7-java8
COPY webapps /tmp/webapps/
ADD tomcat/bin /opt/tomcat/bin/
RUN chmod 775 /opt/tomcat/bin/catalina.sh
RUN chown root:root /opt/tomcat/bin/catalina.sh
RUN cp -r /tmp/webapps/* /opt/tomcat/webapps/
ENV JAVA_OPTS ""
EXPOSE 8282
CMD sh /opt/tomcat/bin/catalina.sh $JAVA_OPTS && touch /opt/tomcat/logs/webapp.log && tail -f /opt/tomcat/logs/webapp.log
server.xml :
<GlobalNamingResources>
<Resource
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
type="javax.sql.DataSource"
global="jdbc/webapp"
initialSize="0"
maxActive="10"
maxIdle="5"
maxWait="5000"
minIdle="0"
timeBetweenEvictionRunsMillis="34000"
minEvictableIdleTimeMillis="55000"
testOnBorrow="true"
testWhileIdle="true"
testOnReturn="false"
validationQuery="SELECT 1 FROM dual"
validationInterval="30000"
removeAbandoned="true"
removeAbandonedTimeout="10"
name="jdbc/webapp"
username="${db.username}"
password="${db.password}"
url="jdbc:mysql://${db.url}:${db.port}/webapp?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8"
</GlobalNamingResources>