我正在通过一个docker-compose文件构建两个docker容器,"app“和"db”。
应用服务器只是通过Dockerfile安装java/tomcat,Dockerfile是docker-compose用来构建的。
数据库服务器使用MS SQL映像。
当我运行: docker-compose up
我遵循了需要加载的软件的构建过程,该过程将一个war部署到应用程序服务器中的tomcat目录,并在数据库服务器中构建数据库。
我的问题是:构建过程可以引用localhost:8080将软件安装/修补到应用服务器,引用localhost:1433将软件的数据库部分安装/修补到数据库服务器。但是,当我启动Tomcat时,系统没有联机,因为应用服务器不能通过"localhost:1433“连接到数据库服务器,所以它要求我在构建到docker内部IP地址之后立即更新属性文件,然后它才能工作。
我的问题是:如何让我的本地主机和应用程序容器在数据库url中以相同的方式引用DB?
应用服务器的Dockerfile:
FROM centos:centos7
COPY apache-tomcat-9.0.20.tar.gz /tmp/
WORKDIR /tmp/
RUN yum -y update
RUN yum -y install java-11-openjdk-devel
RUN tar -xf apache-tomcat-9.0.20.tar.gz
RUN mv apache-tomcat-9.0.20 /opt/tomcat/
RUN export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/
RUN export PATH=$PATH:$JAVA_HOME/jre/bin
RUN export CATALINA_HOME=/opt/tomcat/
RUN export PATH=$PATH:$CATALINA_HOME/bin
WORKDIR /opt/tomcat/webapps
RUN mkdir testapp
enter code here
enter code hereDocker-Compose文件:
version: '3.3'
services:
db:
image: "mcr.microsoft.com/mssql/server:2017-latest"
restart: always
volumes:
- db_data:/var/lib/mssql
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Test123
network_mode: bridge
hostname: db
ports:
- "1433:1433"
app:
build: './testapp'
volumes:
- './system/build:/opt/tomcat/webapps/testapp/'
ports:
- "8080:8080"
- "8009:8009"
network_mode: bridge
tty: true
depends_on:
- db
volumes:
db_data:发布于 2019-07-09 23:13:56
将您的服务带到同一网络,并按服务名称确定服务的目标。为此,您需要定义一个如下所示的docker网络。在下面的示例中,我可以使用http://mongo:27017访问DB。
mongo:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- ./data/db:/data/db
networks:
- my-net
spring:
depends_on:
- mongo
image: docker-spring-http-alpine
ports:
- "8080:8080"
networks:
- my-net
networks:
my-net:https://stackoverflow.com/questions/56954967
复制相似问题