首页 > 解决方案 > elixir-phoenix 应用程序在 docker 容器中以 swarm 模式不断退出

问题描述

这是我的生产.Dockerfile

FROM elixir:1.6.5

RUN apt-get -y -qq update > /dev/null && \
  mix local.hex --force && \
  mix local.rebar --force && \
  ln -s /lib/x86_64-linux-gnu/libncursesw.so.5 /lib/x86_64-linux-gnu/libncursesw.so.6

WORKDIR /phx_test

ADD phx_test.tar.gz .

EXPOSE 4001

ENTRYPOINT ["bin/phx_test"]

CMD ["console"]

production.docker-stack.yml

version: "3.6"

services:
  server:
    image: repo-name/webapp:0.0.2
    depends_on:
      - database
    networks:
      - backend
    ports:
      - "80:4001"
    deploy:
      replicas: 3

  database:
    image: postgres:10
    ports:
      - "5432:5432"
    secrets:
      - db-secret
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=pguser
      - POSTGRES_PASSWORD_FILE=/run/secrets/db-secret
      - POSTGRES_HOST=db-phx-test
      - POSTGRES_DB=phx-test-prod
    networks:
      - backend
networks:
  backend:

volumes:
  db-data:

secrets:
  db-secret:
    external: true

配置/prod.secret.exs

config :phx_test, PhxTestWeb.EndPoint,
  http: [port: 4001],
  url: [host: "server", port: 4001],
  secret_key_base: "******"

config :phx_test, PhxTest.Repo,
  adapter: Ecto.Adapter.Postgres,
  username: "pguser",
  password: "super-secret-pw",
  hostname: "database",
  database: "phx-test-prod",
  port: 5432,
  pool_size: 15

我将在下一个即将到来的项目中使用 Phoenix + Absinthe,并且我想对我的 phoenix 应用程序进行 docker 化,所以我使用简单的 hello world phoenix 应用程序对其进行测试。

我可以从我轻松构建的图像中运行容器并毫无问题地访问 hello world 页面,但是在这样做之后stack deploy,这发生了

Elixir 控制台日志

由于某种原因,它似乎正在退出,我还不知道如何解决这个问题,任何人在遇到这个问题之前请分享一些如何解决它的想法。

标签: dockerelixirphoenix-frameworkdocker-swarm

解决方案


推荐阅读