簡體   English   中英

連接戲劇! Docker-compose將應用程序應用到Postgres(帶有Postgis)數據庫

[英]Connecting a Play! application to a postgres (with Postgis) database with Docker-compose

我正在嘗試開始玩! 2.4使用帶有Docker-compose的Postgres數據庫的應用程序。

我設法開始玩了! 單獨的應用程序(但由於無法連接到數據庫而無法工作)。 而且我還設法使用圖像mdillon / postgis:9.4啟動了我的postgis數據庫。

我的Dockerfile是:

FROM mdillon/postgis:9.4

ADD init.sql /docker-entrypoint-initdb.d/

這是我的init.sql文件:

CREATE USER simon WITH PASSWORD 'mySecretPassword';
ALTER USER simon WITH SUPERUSER;

CREATE DATABASE ticketapp;
GRANT ALL PRIVILEGES ON DATABASE ticketapp TO simon;
\connect ticketapp simon
CREATE EXTENSION postgis;

CREATE DATABASE tests;
GRANT ALL PRIVILEGES ON DATABASE tests TO simon;
\connect tests simon
CREATE EXTENSION postgis;

(我認為沒有必要創建擴展,因為它似乎已經完成了。)

如果我運行docker數據庫並手動運行init.sql腳本,則可以添加具有Geometry類型的表作為列。

現在出現了我的問題:如果我嘗試將兩個服務與Docker-compose和以下docker-compose.yml文件鏈接:

5.run:
  image: 5.run
  ports:
    - "88:88"
  links:
    - dbHost

dbHost:
  image: my_postgres
  ports:
    - "5433:5433"
  expose:
    - "5433"

我收到以下錯誤:

dbHost_1 | LOG:  database system is ready to accept connections
dbHost_1 | ERROR:  relation "play_evolutions" does not exist at character 72
dbHost_1 | STATEMENT:  select id, hash, apply_script, revert_script, state, last_problem from play_evolutions where state like 'applying_%'
dbHost_1 | ERROR:  type "geometry" does not exist at character 150
dbHost_1 | STATEMENT:  CREATE TABLE frenchCities (
dbHost_1 |  cityId                    SERIAL PRIMARY KEY,
dbHost_1 |  city                      VARCHAR(255) NOT NULL,
dbHost_1 |  geographicPoint           GEOMETRY NOT NULL
dbHost_1 |  )
5.run_1  | [error] p.a.d.e.DefaultEvolutionsApi - ERROR: type "geometry" does not exist
5.run_1  |   Position: 150 [ERROR:0, SQLSTATE:42704]

請注意,我的游戲! 應用程序正確地等待數據庫准備就緒。

現在我對如何使其工作一無所知,任何線索都很好!

首先,我將向您展示如何配置db(連接文件的編輯文件)以及如何在播放中進行配置。

sudo su
apt-get install scala   //is important for play

apt-get -y install postgresql
sudo -u postgres psql
\password postgres

CREATE USER andi WITH PASSWORD 'pw';
create TABLE play OWNER TO andi;

\q

gui for postgres

apt-get -y install pgadmin3

您必須編輯文件(root用戶訪問權限) :必須在以下數據中寫入md5。 您只需要刪除數據中的注釋即可解釋。

/etc/postgresql/9.4/main/pg_hba.conf

這是deffiniert誰以及如何登錄

# Database administrative login by Unix domain socket
local   all             postgres                                md5 // here

#here is deffiniert who and how they can log in
# TYPE DATABASE        USER            ADDRESS                 METHOD

#here is deffiniert who and how they can log in# "local" is for Unix domain socket connections only
#here is deffiniert who and how they can log inlocal   all       all     md5 

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5 //and here
host    all             andi             127.0.0.1/32            md5 //and here


# IPv6 local connections:
host    all             all             ::1/128                 md5

build.sbt

import _root_.sbt.Keys._
import _root_.sbt._

name := """has"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  cache,
  javaWs,
  javaCore,
  javaJdbc,
  "com.github.nscala-time" %% "nscala-time" % "1.6.0",
  "org.postgresql" % "postgresql" % "9.3-1102-jdbc41",
  "jp.t2v" %% "play2-auth" % "0.13.0",
  "jp.t2v" %% "play2-auth-test" % "0.13.0" % "test",
  "org.webjars" % "bootstrap" % "3.3.5"
)
lazy val myProject = (project in file("."))
  .enablePlugins(PlayJava, PlayEbean)

val appDependencies = Seq(
  "mimerender" %% "mimerender" % "0.1.2"
)

conf / application.conf

play.crypto.secret = "aKr4Mfn!vKzDjfhfdJRsakgbPS35!!HVDldkosGHRT"

# The application languages
play.i18n.langs = [ "en" ]
db.default.user=andi
db.default.password="pw"
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/play"

#The following line define define the model folder. You have to add a folder called models in the app folder.
ebean.default = "models.*"

# Root logger:
logger.root=ERROR
play.evolutions.enabled=true
# Logger used by the framework:
logger.play=INFO

# Logger provided to your application:
logger.application=DEBUG

項目/plugins.sbt

通常,您只需要取消最后一行的注釋即可。

// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.4")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt using
// enablePlugins(SbtEbean). Note, uncommenting this line will automatically bring in
// Play enhancer, regardless of whether the line above is commented out or not.
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")

我希望這就是您所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM