
在猫的下方是一个小型且简单的指南,该指南显示了如何使用Docker Compose配置和启动Elixir / Phoenix + PostgreSQL应用程序。
准备工作
创建一个空的<app_dir>目录并转到该目录:
mkdir <app_dir> && cd <app_dir>
创建一个
Dockerfile并填充内容。
<app_dir> / docker文件 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生成一个新应用程序,其中<app_name>是应用程序的名称:
docker-compose run web mix phx.new . --app <app_name>
如果您在Linux上使用Docker,则创建的文件由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-00-00000 。

测验
最后是测试。
为了完成所有测试,您需要运行:
docker-compose run test
要运行特定测试:
docker-compose run test mix test test/<app_name>_web/controllers/page_controller_test.exs
就这样,一切都很好!