docker - 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
,这发生了
由于某种原因,它似乎正在退出,我还不知道如何解决这个问题,任何人在遇到这个问题之前请分享一些如何解决它的想法。
解决方案
推荐阅读
- node.js - 尝试在 kubernetes 上运行 ui (app) 时出错?
- azure - 使用 AKS 进行事件网格验证
- flutter - Flutter:如何设置 SliverAppBar 默认折叠
- java - PKIX 路径构建在 Java 7 中失败,但在 Java 8 中失败 - 尽管拥有浏览器信任的 Let's Encrypt 证书,但无法连接到我的 HTTPS 服务器
- r - 在 ggBoxplot 中标记异常值
- batch-file - 如何只访问一个额外的子目录并使用批处理访问他们的文件?
- c# - Unity 在使用 Firebase 数据库进行异步编程时崩溃
- vue.js - 对通过配置对象传递的动态组件使用 Vue :is prop
- corda - 网络地图上的 Corda 节点如何指定 minimumPlatformVersion?
- xaml - 如何在焦点/选择更改时更改网格视图的字体和字体大小