Desarrollo de aplicaciones en Elixir / Phoenix con Docker



Under the cat es una gu铆a peque帽a y simple que muestra c贸mo usar Docker Compose para configurar y ejecutar la aplicaci贸n Elixir / Phoenix + PostgreSQL.

Preparaci贸n


Cree un directorio <app_dir> vac铆o y vaya a 茅l:

mkdir <app_dir> && cd <app_dir> 

Crea un Dockerfile y ll茅nalo de contenido.

<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 


Crea docker-compose.yml y ll茅nalo de contenido.

<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> 



Creaci贸n de proyectos


Generamos una nueva aplicaci贸n usando docker-compose, donde <app_name> es el nombre de la aplicaci贸n:

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

Si usa Docker en Linux, los archivos creados son propiedad de root, ya que el contenedor se ejecuta en su nombre. Para evitar dificultades en el futuro, debe cambiar el propietario:

 sudo chown -R $USER:$USER . 

Conexi贸n de base de datos


Para conectarse a la base de datos en la configuraci贸n de nuestra aplicaci贸n, debe cambiar dos archivos:

<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 


Despu茅s de ajustar la configuraci贸n, creamos una base para cada entorno:

 docker-compose run web mix ecto.create 

 docker-compose run test mix ecto.create 

Lanzamiento de la aplicaci贸n


Bueno, solo queda ejecutar nuestra aplicaci贸n:

 docker-compose up -d 

Eso es todo Ahora nuestra aplicaci贸n est谩 disponible en http : //127.0.0.1-00-00000 .



Pruebas


Y al final sobre las pruebas.

Para completar todas las pruebas, debe ejecutar:

 docker-compose run test 

Para ejecutar una prueba espec铆fica:

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

Eso es todo, todo bien!

Source: https://habr.com/ru/post/439718/


All Articles