2017-07-18 122 views
0

我想用Wildfly Swarm,Docker和PostgreSQL作为数据库来构建一个简单的休息服务。Docker容器上连接Postgres数据源的蜻蜓虫错误

该应用程序在localhost上运行良好(没有docker)。

我在使用上泊坞窗基础数据源连接数据库的问题

这是我docker.compose.yml

version: '3' 

services: 

    web: 
    build: . 
    depends_on: 
     - db 

    db: 
    build: ./db 
    ports: 
     - "5432:5432" 

我的Web Dockerfile

FROM fabric8/java-jboss-openjdk8-jdk:1.2.3 

ENV AB_OFF true 

ADD megasindico-billing-api-swarm.jar /opt/megasindico-billing-api-swarm.jar 

EXPOSE 8080 

ENTRYPOINT ["java", "-jar", "/opt/megasindico-billing-api-swarm.jar"] 

PostgreSQL的Dockerfile

FROM postgres:9.4-alpine 

ENV POSTGRES_USER=admin 
ENV POSTGRES_PASSWORD=admin 

project-defaults.yml是哪里是我的配置数据源:

swarm: 
    datasources: 
    data-sources: 
     ### [datasource] 
     megasindico-billing-ds: 
     driver-name: postgresql 
     connection-url: jdbc:postgresql://db/postgres 
     user-name: admin 
     password: admin 

而且继承人的persistence.xml的样子:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 

    <persistence-unit name="megasindico-billing-ds" transaction-type="RESOURCE_LOCAL"> 

     <provider>org.hibernate.ejb.HibernatePersistence</provider> 

     <properties> 
      <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> 
      <property name="hibernate.hbm2ddl.import_files" value="scripts/reset.sql"/> 
      <property name="hibernate.connection.useUnicode" value="true" /> 
      <property name="hibernate.connection.characterEncoding" value="UTF-8" /> 
     </properties> 

    </persistence-unit> 

</persistence> 

的应用程序使用mvn clean package命令建造的。

要构建映像我使用build.sh文件:

#!/usr/bin/env bash 

# Copy jar file to this directory 
cp ../target/megasindico-billing-api-swarm.jar megasindico-billing-api-swarm.jar 

# Build Docker image 
docker-compose build 

# Remove temp file 
rm -rf megasindico-billing-api-swarm.jar 

之后,我执行docker-compose up命令来获取图像运行。

我得到的错误是这些: error part 1

error part 2

回答

2

尝试增加-Djava.net.preferIPv4Stack=true到多克尔切入点,即

ENTRYPOINT ["java", "-jar", "/opt/megasindico-billing-api-swarm.jar", "-Djava.net.preferIPv4Stack=true"] 

并请复制并粘贴错误的文本而不是张贴屏幕截图。没有人在未来寻找类似的问题将能够找到它,因为它是一个屏幕截图。

+0

伙计,希望我可以付给你一杯啤酒 –