[英]Docker-compose with postgres with geography postgis not working
[英]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.