Coder Social home page Coder Social logo

denisnovac / phonebook Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 93 KB

Телефонный справочник на Scala c Http4s, Cats и Doobie

Home Page: https://hub.docker.com/repository/docker/denisnovac/scala-phonebook

Scala 99.24% Dockerfile 0.60% Shell 0.16%

phonebook's Introduction

Phonebook Scala

Простая телефонная книга на Scala с Http4s, Cats IO и Doobie.

Варианты запуска

Мной предусмотрено несколько вариантов запуска.

Готовый контейнер Docker

Готовый образ находится в репозитории Docker Hub: denisnovac/scala-phonebook. Проще всего запустить его, используя docker-compose и конфиг application.conf из данного репозитория.

Сборка JAR

Сборка толстого JAR со всеми зависимостями осуществляется командой sbt assembly. Полученный JAR готов к запуску. Для его конфигурации необходим файл application.conf, без него не получится подсоединиться к БД.

Сборка контейнера Docker

Собрать контейнер можно последовательностью команд sbt assembly и docker build -t phonebook ./. После этого контейнер можно запускать через docker run или docker-compose up -d. В репозитории приложен конфиг docker-compose.yml с готовыми настройками для поднятия вместе с БД. Для конфигурации программы все ещё необходим application.conf, его можно "прокинуть" в контейнер (в файле compose он уже прокинут).

Конфигурационный файл application.conf

Приложение ищет файл application.conf в месте своего запуска. Если его нет, то оно будет запущено на localhost:9000 с хранением в памяти.

Формат файла:

persistent = true
app-host = "172.18.1.2"
app-port = "9000"
db-host = "172.18.1.10"
db-port = "5432"
db = "postgres"
db-user = "postgres"
db-password = "P@ssw0rd"

Поля файла:

  • persistent: Boolean - true чтобы использовать БД, false, чтобы хранить в памяти в коллекции List;
  • app-host: String - адрес приложения;
  • app-port: String - порт приложения;
  • db-host: String - адрес удалённой БД;
  • db-port: String - порт удалённой БД;
  • db: String - имя базы данных, в которой приложение будет работать;
  • db-user: String - имя пользователя БД, у которого есть доступ к этой БД;
  • db-password: String - пароль пользователя БД.

Если persistent = true, то ещё до запуска Blaze сервера и бинда на порт приложение начнёт ждать БД. Если соединение не будет получено - будет брошен эксепшен SQLTimeoutException.

Если и БД, и приложение в контейнере - настройки app-host и db-host должны соответствовать внутренней сети Docker. Но можно поступать и иначе. Например, запустить БД в контейнере, а приложение - на хосте. Тогда app-host и db-host должны быть localhost. Если БД находится на удалённом хосте, то приложение должно быть запущено с сетью, из которой есть доступ к сети БД.

Если пользоваться контейнером, то файл можно прокинуть откуда угодно через композ или соответствующий параметр в файл /opt/app/application.conf:

./application.conf:/opt/app/application.conf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.