将 keycloak docker 映像部署到 heroku

Deploying keycloak docker image to heroku

我正在尝试部署从 jboss/keycloak 扩展到 heroku 容器堆栈的自定义 keycloak docker 图像。

已成功部署,但错误提示启动时权限被拒绝。

我是 heroku 容器的新手。有人可以帮我吗?

这是我的 heroku.yml 文件

    addons:
        - plan: heroku-postgresql:hobby-dev
          as: DATABASE
build:
    docker:
        web: Dockerfile

这是我的 docker 文件

FROM jboss/keycloak:latest
ENV DB_PORT 5432
ENV DB_DATABASE mydatabase
ENV DB_USER myuser
ENV DB_PASSWORD mypassword
ENV DB_VENDOR postgres
ENV DB_ADDR postgres
ENV KEYCLOAK_USER mykeycloak
ENV KEYCLOAK_PASSWORD mykeycloakpassword
ENV PORT 8080
COPY standalone.xml /opt/jboss/keycloak/standalone/standalone.xml
COPY standalone.xml /opt/jboss/keycloak/standalone/configuration/standalone.xml
COPY meraklis /opt/jboss/keycloak/themes/mytheme
COPY docker-entrypoint.sh /opt/jboss/tools
ENTRYPOINT [ "/opt/jboss/tools/docker-entrypoint.sh" ]
CMD ["-b", "0.0.0.0"]

这里是 heroku 日志中的错误

2020-03-18T05:07:02.975073+00:00 heroku[web.1]: Starting process with command `-b 0.0.0.0`
2020-03-18T05:07:05.796708+00:00 heroku[web.1]: State changed from starting to crashed
2020-03-18T05:07:05.773550+00:00 heroku[web.1]: Process exited with status 126
2020-03-18T05:07:05.733774+00:00 app[web.1]: Error: Permission denied

我注意到它实际上不是 heroku 问题,而是 docker 问题。 Heroku 不允许 运行 在容器中 运行 以 root 身份运行任何脚本或命令。它将一个虚拟的非 root 用户添加到容器中,并且容器 运行 在您在 docker 文件中指定的 workdir 下的该用户上下文下。您需要授予 shell 脚本执行权限才能使它 运行 正确。这就是我的问题

需要一些调整才能与 heroku 一起使用。我试过这个 https://github.com/Jeff-Tian/keycloak-heroku and succeeded, live demo: https://unisso.herokuapp.com/.

一键部署:

源代码:https://github.com/Jeff-Tian/keycloak-heroku

注意事项:

由于密钥斗篷需要更多资源,因此无法使用免费动态。因此,您需要每月支付 7 美元购买最小可行测功机:

我有同样的错误,我修复了它,你只需要像这样 git add --chmod=+x -- docker-entrypoint.sh[=11] 从 git 向 docker-entrypoint.sh 授予权限=]