Dockerizing play framework - PullRequest
       7

Dockerizing play framework

0 голосов
/ 12 ноября 2018

Мой составной файл докера:

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.

Однако, когда я выполняю exec в контейнере crm-psql и набираю psql crm, он переходит в оболочку postgres. В чем проблема здесь

1 Ответ

0 голосов
/ 12 ноября 2018

Я думаю, что ваша проблема в том, что вы используете localhost для указания своей базы данных.Вы должны использовать свою ссылку вместо этого.С точки зрения вашего контейнера "sbt", localhost - это сам по себе, а не ваш локальный компьютер (с переадресацией портов) или ваш контейнер postgresql.

Обычно я использую переменные среды.

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

После того, как вам нужно указать в вашем сценарии SBT, как использовать вашу переменную POSTGRES_SERVICE_HOST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...