Docker化游戏框架

时间:2018-11-12 07:16:18

标签: postgresql docker-compose dockerfile playframework-2.6

我的docker compose文件是:

version: '3'
services:
  postgres:
    container_name: crm-psql
    image: postgres:9.3
    restart: always
    environment:
    - POSTGRES_DB=crm
    - POSTGRES_USER=root
    - POSTGRES_PASSWORD=root
    volumes:
    - ./db/postgres/data:/var/lib/postgresql/data
    ports:
      - 5432:5432
  nginx:
    container_name: crm-nginx
    image: nginx:1.15
    restart: always
    ports:
    - 80:80
    - 443:443
    volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  web:
    build: .
    ports:
    - 9000:9000
    volumes:
    - .:/src/main/java
    - ~/.ivy2:/root/.ivy2
    - ~/.sbt:/root/.sbt
    links:
    - postgres
    - nginx

用于构建的docker文件为:

FROM openjdk:8
ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin

ENV SBT_VERSION 1.2.1

# Install curl
RUN \
  apt-get update && \
  apt-get -y install curl && \
  apt-get -y install vim

# Install sbt
RUN \
  curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
  dpkg -i sbt-$SBT_VERSION.deb && \
  rm sbt-$SBT_VERSION.deb && \
  apt-get update && \
  apt-get -y install sbt

WORKDIR /src/main/java
COPY . /src/main/java
RUN sbt update
EXPOSE 9000
ENTRYPOINT ["sbt", "run"]

每当我进行docker-compose时,都不会建立与postgres的连接。例外是

  

org.postgresql.util.PSQLException:与本地主机的连接:5432被拒绝。检查主机名和端口是否正确以及邮局主管正在接受TCP / IP连接。

但是,当我在容器crm-psql中执行并键入psql crm时,它将进入postgres shell。这是什么问题

1 个答案:

答案 0 :(得分:1)

我认为您的问题是您使用localhost指示数据库。您应该改用链接。从“ sbt”容器的角度来看,本地主机本身就是本地主机,而不是本地计算机(具有端口转发功能)或postgresql容器。

通常,我使用的是环境变量。

links:
  - postgres
  - nginx
environment: 
  - POSTGRES_SERVICE_HOST=postgres

需要在SBT脚本中指定如何使用POSTGRES_SERVICE_HOST变量后