2016-03-25 50 views
2

PostgreSQL'i veritabanı olarak kullanan bir Spring Boot uygulaması için Docker kabı oluşturmaya çalışıyorum. Amacım, uygulamayı PostgreSQL gibi çalıştıran bir kap oluşturmak. Ben aşağıdaki gibi bir Dockerfile oluşturuldu:Gömme Spring Boot Uygulaması ile Postgresql

FROM ubuntu:15.10 
LABEL version="1" 

ADD app.jar app.jar 
RUN bash -c 'touch /app.jar' 

# Install Java, Postgresql 
...... 

USER postgres 
RUN /etc/init.d/postgresql start &&\ 
    psql --command "CREATE USER test WITH SUPERUSER PASSWORD 'test';" &&\ 
     createdb -O test test 

USER root 
RUN echo "local all all trust" >> /etc/postgresql/9.4/main/pg_hba.conf 
RUN echo "listen_addresses='127.0.0.1'" >> /etc/postgresql/9.4/main/postgresql.conf 
RUN echo "localhost vspyfe-db" >> /etc/hosts 
#Define working directory. 
WORKDIR /data 
# Add VOLUMEs to allow backup of config, logs and databases 
VOLUME ["/tmp", "/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] 

# Define commonly used JAVA_HOME variable 
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle 
COPY ./entrypoint.sh/
RUN chmod +x /entrypoint.sh 
ENTRYPOINT ["/entrypoint.sh"] 
CMD ["bash", "/usr/lib/postgresql/9.4/bin/postgres", "-D", "/var/lib/postgresql/9.4/main", "-c", "config_file=/etc/postgresql/9.4/main/postgresql.conf"] 

ve entrypoint.sh geçerli:

#!/bin/sh 
/etc/init.d/postgresql start 
java -Djava.security.egd=file:/dev/./urandom -jar /app.jar 
Bu komutla docker build --rm=true -t vspyfe/base:v1 . ile inşa

ve ben diyor ben istisna var bu komutla docker run -i -t vspyfe/base:v1 ile görüntü çalıştırdığınızda

Caused by: org.postgresql.util.PSQLException: FATAL: role "test" does not exist 
at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:471) 
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:112) 
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) 
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125) 
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) 
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22) 
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:32) 
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24) 
at org.postgresql.Driver.makeConnection(Driver.java:393) 
at org.postgresql.Driver.connect(Driver.java:267) 

varsayılan kullanıcı adı ve şifre (postgres, postgres) ile deney db oluşturmaya çalışırsanız bile, o zaman excepti var Üzerinde test db mevcut değil diyor. Nerede yanlış olduğumu anlamıyorum. Dockerfile'da ben application.properties dosyasında kullandığım her bir parametreyi belirledim.

cevap

-1

Bağlantı özelliklerinizi kontrol ettiniz mi? Güzel bir şekilde postgres ile çalışan bir ilkbahar-önyükleme uygulamasının çalışan bir örneğim var. Her ikisi de farklı kaplarda çalışıyor.

mvn temiz paket liman işçisi -DskipTests: liman işçisi durdurmak: liman işçisi inşa:

Spring Boot + Postgres example, using the fabric8.io plugin

örneği çalıştırmak için: bakınız çalıştırın