如何调试在 Docker 中运行的 Phoenix 应用程序?

3

我试图在控制器的index动作中使用IEx.pry,但是不起作用,我之前已经引入了IEx。

 defmodule Registering.DriverController do
   require IEx
   use Registering.Web, :controller
   ....
 end

 def index(conn, _params) do
   drivers = Repo.all(Driver)
   IEx.pry
   ...
 end

当我运行docker-compose run web iex -S mix phx.server并重新加载索引路由器时,iex控制台不会显示调试操作。
这是我的Dockerfile:
FROM elixir:latest

MAINTAINER Your Name <email>

RUN mix local.hex --force

RUN mix archive.install --force https://github.com/phoenixframework/archives/raw/master/phx_new.ez

RUN mix local.rebar --force

WORKDIR /app

这是我的docker-compose.yml文件:
web:
  build: .
  ports:
    - "4000:4000"
  command: mix phx.server
  environment:
    - MIX_ENV=dev
    - PORT=4000
  volumes:
    - .:/app
  links:
    - db
db:
  image: postgres
  environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=postgres
    - POSTGRES_HOST=db

你能试着加上 --interactive 参数运行吗 :-) - MartinElvar
1个回答

2

使用docker exec命令附加到Bash并运行自定义iex会话。例如:

docker exec -it NAME bash


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接