将keycloak docker映像部署到heroku

时间:2020-03-18 05:13:19

标签: docker heroku jboss keycloak

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

它已成功部署,但错误地指出启动本身被拒绝。

我是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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

需要一些调整才能使用heroku。我尝试了此https://github.com/Jeff-Tian/keycloak-heroku,并成功进行了现场演示:https://unisso.herokuapp.com/

一键部署:

Deploy to Heroku

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

答案 2 :(得分:0)

我遇到了同样的错误,我修复了它,您只需要像这样从 git 授予 docker-entrypoint.sh 权限git add --chmod=+x -- docker-entrypoint.sh