首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密钥掩体码头容器在重新启动容器后无法启动

密钥掩体码头容器在重新启动容器后无法启动
EN

Stack Overflow用户
提问于 2020-06-16 06:58:05
回答 3查看 14.3K关注 0票数 10

我有一个Keycloak安装作为码头容器在一个码头-合成环境中运行。每天晚上,我的备份都会停止相关的容器,执行DB和卷备份,然后重新启动容器。对大多数人来说,这是可行的,但是Keycloak似乎有问题,以后就不会再出现了。查看日志,错误消息是:

代码语言:javascript
复制
The batch failed with the following error: : 
keycloak           | WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:
keycloak           | Step: step-9
keycloak           | Operation: /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql, driver-module-name=org.postgresql.jdbc, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
keycloak           | Failure: WFLYCTL0212: Duplicate resource [
keycloak           |     ("subsystem" => "datasources"),
keycloak           |     ("jdbc-driver" => "postgresql")
keycloak           | ]
...
The batch failed with the following error: : 
keycloak           | WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:
keycloak           | Step: step-9
keycloak           | Operation: /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql, driver-module-name=org.postgresql.jdbc, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
keycloak           | Failure: WFLYCTL0212: Duplicate resource [
keycloak           |     ("subsystem" => "datasources"),
keycloak           |     ("jdbc-driver" => "postgresql")
keycloak           | ]

密钥披风的docker-compose.yml条目如下所示,显然删除了重要数据

代码语言:javascript
复制
  keycloak:
    image: jboss/keycloak:8.0.1
    container_name: keycloak
    environment:
      - PROXY_ADDRESS_FORWARDING=true
      - DB_VENDOR=postgres
      - DB_ADDR=db
      - DB_DATABASE=keycloak
      - DB_USER=keycloak
      - DB_PASSWORD=<password>
      - VIRTUAL_HOST=<url>
      - VIRTUAL_PORT=8080
      - LETSENCRYPT_HOST=<url>
    volumes:
      - /opt/docker/keycloak-startup:/opt/jboss/startup-scripts

我映射的卷是为了对WildFly进行一些更改,以确保它在反向代理中运行良好:

代码语言:javascript
复制
embed-server --std-out=echo

#  Enable https listener for the new security realm
/subsystem=undertow/ \
  server=default-server/ \
    http-listener=default \
      :write-attribute(name=proxy-address-forwarding, \
                       value=true)

#  Create new socket binding with proxy https port
/socket-binding-group=standard-sockets/ \
  socket-binding=proxy-https \
    :add(port=443)

#  Enable https listener for the new security realm
/subsystem=undertow/ \
  server=default-server/ \
    http-listener=default \
      :write-attribute(name=redirect-socket, \
                       value="proxy-https")

停止容器后,它不再以上面所示的消息开始。然而,移除容器并重新创建它很好。我试着在初始开始后删除音量,这也没有什么区别。我已经了解到,在初始引导之后,我必须删除KEYCLOAK_USER=adminKEYCLOAK_PASSWORD环境变量,否则容器会抱怨用户已经存在并且不再启动。知道怎么解决吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-24 19:55:29

2021年5月23日更新:

这个问题已经在RedHats Jira上解决了,它似乎在版本12中得到了解决。

根据RedHat支持,这是一个已知的“问题”,不应该被修复。他们希望将精力集中在一个工作流上,在这个工作流中,容器被移除和重新创建,而不是启动和停止。他们同意总的问题,但指出目前没有可用的资源。停止并启动容器是当前不支持的操作。

例如,请参阅https://issues.redhat.com/browse/KEYCLOAK-13094?jql=project%20%3D%20KEYCLOAK%20AND%20text%20~%20%22docker%20restart%22以获得参考

票数 9
EN

Stack Overflow用户

发布于 2021-01-01 01:31:37

重新启动的一个合法用例是添加调试日志记录。例如,使用外部标识提供程序调试身份验证。

最后,我创建了一个shell脚本,用于:

停止container

  • docker rm container

  • recreates与日志记录configuration

  • docker运行选项

更改所需的映像

然而,码头的一个很好的特点是能够自动重新启动停止的容器,减少停机时间。这个Keycloak错误夺走了这个特性。

票数 2
EN

Stack Overflow用户

发布于 2021-03-09 21:03:11

我在这里也有同样的问题,我的解决办法是:

  1. 将停靠容器导出到.tar文件:

docker export CONTAINER_NAME > latest.tar

2-在码头上创建一个新卷

docker volume create VOLUME_NAME

3-启动一个新的码头容器,将创建的卷映射到容器db路径,如下所示:

docker run --name keycloak2 -v keycloak_db:/opt/jboss/keycloak/standalone/data/ -p 8080:8080 -e PROXY_ADDRESS_FORWARDING=true -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=root jboss/keycloak

4-截停货柜

5-解压缩tar文件并找到数据库路径,如下所示:

tar unpack path: /opt/jboss/keycloak/standalone/data

6-将路径内容移到停靠卷,如果不知道物理路径在哪里,请使用docker inspect volume VOLUME_NAME查找路径。

7-启动停运的集装箱

这对我来说很有用,我希望它能对下一个人解决这个问题很有帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62402630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档