Хабрахабр

[Из песочницы] Разработка приложений на Elixir/Phoenix с помощью Docker

Под катом небольшое и простое руководство, в котором показано, как использовать Docker Compose для настройки и запуска приложения Elixir/Phoenix + PostgreSQL.

Подготовка

Создаем пустой каталог и переходим в него:

mkdir <app_dir> && cd <app_dir>

Создаем Dockerfile и наполняем содержимым.

<app_dir>/dockerfile

FROM elixir:latest RUN apt-get update -qq && apt-get install -y libpq-dev && apt-get install -y build-essential inotify-tools erlang-dev erlang-parsetools apt-transport-https ca-certificates && apt-get update && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && apt-get update && apt-get install --no-install-recommends yarn
RUN mix local.hex --force && mix local.rebar --force
RUN mix archive.install hex phx_new 1.4.0 --force RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - && apt-get install -y nodejs WORKDIR /home/app

Создаем docker-compose.yml и наполняем содержимым.

<app_dir>/docker-compose.yml

version: '3'
services: web: build: . command: mix phx.server volumes: - .:/home/app ports: - "4000:4000" links: - db depends_on: - db test: image: <app_dir>_web command: mix test environment: MIX_ENV: test PORT: 4001 volumes: - .:/home/app db: image: postgres:latest ports: - '5432:5432' environment: POSTGRES_USER: <db_user> POSTGRES_PASSWORD: <db_user_password>

Создание проекта

Генерируем новое приложение, используя docker-compose, где — имя приложения:

docker-compose run web mix phx.new . --app <app_name>

Если вы используете Docker в Linux, то созданные файлы принадлежат root, так как контейнер запускается от его имени. Чтобы избежать трудностей в дальнейшем, нужно поменять владельца:

sudo chown -R $USER:$USER .

Подключение к базе данных

Для подключения к базе данных в настройках нашего приложения необходимо изменить два файла:

<app_dir>/config/dev.exs

# Configure your database
config :<app_name>, <App_name>.Repo, username: <db_user>, password: <db_user_password>, database: <app_name>_dev, hostname: "db", pool_size: 10

<app_dir>/config/test.exs

# Configure your database
config :<app_name>, <App_name>.Repo, username: <db_user>, password: <db_user_password>, database: <app_name>_test, hostname: "db", pool_size: 10

После того как настройки откорректированы, создаем базу для каждого окружения:

docker-compose run web mix ecto.create

docker-compose run test mix ecto.create

Запуск приложения

Ну и осталось только запустить наше приложение:

docker-compose up -d

Вот и все. Теперь наше приложение доступно по адресу http://127.0.0.1:4000.

Тесты

И в концовке про тестирование.

Для того, чтобы выполнить все тесты, нужно выполнить:

docker-compose run test

Чтобы выполнить конкретный тест:

docker-compose run test mix test test/<app_name>_web/controllers/page_controller_test.exs

На этом все, всем добра!

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть