如何使用CentOS7主机上的Docker-Compose .yml将JBOSS服务器容器与SQL Server One



我的主机(在现实的虚拟机中井井有条,但没关系),我已经安装了Docker及其所有相关软件,我已经拉出和配置了(使用JBOSS服务器)A centos 7容器,然后我拔出并配置了一个SQL Server 2017 Image(Linux),我附上了一个卷以使数据库永久性,最后我配置了一个Dockerfile,以同时启动这些图像,并与网络链接(名称" Testing)"),我已经放置了一个应用程序来部署在JBOSS服务器上,并修改了standalone.xml以读取来自SQL Server的数据库" simulation_test",以下是Standlone.xml(数据源部分)

<datasources>
                <datasource jta="true" jndi-name="java:/jboss/datasources/simulation_star1" pool-name="simulation_star1" enabled="true" use-ccm="false">
                    <connection-url>jdbc:sqlserver://172.22.0.2:1433;databaseName=Simulation_Test</connection-url>
                    <driver>sqlserver</driver>
                    <security>
                        <user-name>SA</user-name>
                        <password>catycaty07X</password>
                    </security>
                    <validation>
                        <validate-on-match>false</validate-on-match>
                        <background-validation>false</background-validation>
                        <background-validation-millis>1</background-validation-millis>
                    </validation>
                    <statement>
                        <prepared-statement-cache-size>0</prepared-statement-cache-size>
                        <share-prepared-statements>false</share-prepared-statements>
                    </statement>
                </datasource>

docker-compose yml

version: "3.0"
services:
  webapp1:
    ports:
            - '8080:8080'
            - '9990:9990'
    networks:
            - 'testing'
    links:
            - db1
    image: centoswithjbossconfigured2
  db1:
        environment:
            - 'ACCEPT_EULA: Y'
            - 'MSSQL_SA_PASSWORD: catycaty07X'
            - 'MSSQL_PID: Developer'
        ports:
            - '1433:1433'
        volumes:
            - 'my_volume3:/var/opt/mssql/data'
        image: mcr.microsoft.com/mssql/server:2017-latest
volumes:
    my_volume3:
networks:
  testing:

和最终与已部署的应用程序连接时服务器的输出(JBOSS ONE)(错误,因为整个输出非常长)

webapp1_1  | 09:46:23,353 ERROR [org.jboss.as.ejb3.invocation] (http-/0.0.0.0:8080-6) JBAS014134: EJB Invocation failed on component ConnexionService for method public abstract com.star.simulation.dto.AgenceDTO com.star.simulation.service.IConnexionService.connexion(java.lang.String,java.lang.String): javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Could not open connection

两个容器不在同一docker网络上。webapp1在本地创建的testing网络上;db1在每个堆栈网络码头上为您创建。

我将完全从docker-compose.yml中删除所有networks:links:设置。Docker Compose将为您创建一个网络,并将其所有容器附加到该网络,并且名称webapp1db1将可用作主机名。重新启动堆栈后,硬编码的固定IP地址将是错误的。如果您可以将其更改为更好的环境变量参考,但是主机名db1应该可以使用数据库。

最新更新