【发布时间】:2017-12-18 07:48:52
【问题描述】:
我正在努力构建从官方 jboss/wildfly 图像派生的自定义图像。
如果我只是添加 .war 文件并运行,它会完美运行,但是当我尝试添加自定义的standalone-full.xml 文件时会出现问题
这是我的 Dockerfile:
来自 jboss/wildfly:10.1.0.Final
复制standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone-full.xml
复制 sample.war /opt/jboss/wildfly/standalone/deployments/
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", “standalone-full.xml”、“-b”、“0.0.0.0”、“-bmanagement”、“0.0.0.0”]
这是我的源目录:
link to screenshot of ls -la command inside the source directory
按照建议,我已授予standalone-full.xml 文件755 权限。
但是,使用以下命令构建映像后:
docker build -t 示例应用程序。
并按如下方式运行图像:
docker run -it -p 8080:8080 -p 80:80 -p 443:443 示例应用程序
我收到以下错误:
13:18:06,274 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.undertow.listener.default: org.jboss.msc.service.StartException in service jboss.undertow.listener.default: WFLYUT0082: Could not start 'default' listener.
at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:153)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.xnio.nio.NioXnioWorker.createTcpConnectionServer(NioXnioWorker.java:190)
at org.xnio.XnioWorker.createStreamConnectionServer(XnioWorker.java:243)
at org.wildfly.extension.undertow.HttpListenerService.startListening(HttpListenerService.java:126)
at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:142)
我执行到正在运行的容器中查看独立文件的文件权限:
如果我在运行 CMD 指令之前将用户更改为 root,我可以让应用程序运行,但我认为这不是一个好习惯:
来自 jboss/wildfly:10.1.0.Final
复制standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone-full.xml
复制 sample.war /opt/jboss/wildfly/standalone/deployments/
用户根
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", “standalone-full.xml”、“-b”、“0.0.0.0”、“-bmanagement”、“0.0.0.0”]
如何正确设置独立文件的权限,以便我可以使用“jboss”用户运行应用程序?
我还尝试如下更改 Dockerfile 中的权限以匹配其他文件的权限:
来自 jboss/wildfly:10.1.0.Final
用户根
复制standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone-full.xml
运行 chown jboss:root /opt/jboss/wildfly/standalone/configuration/standalone-full.xml
用户 jboss
复制 sample.war /opt/jboss/wildfly/standalone/deployments/
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", “standalone-full.xml”、“-b”、“0.0.0.0”、“-bmanagement”、“0.0.0.0”]
但是,权限没有得到应用,我仍然得到同样的错误。 谁能指出我在哪里犯错的正确方向?
我正在使用 Docker 版本 17.06.0-ce 和 overlay2 存储驱动程序
【问题讨论】:
标签: linux docker jboss wildfly