在从官方jboss / wildfly映像创build自定义映像时,standalone-full.xml的“权限被拒绝”错误
我正在努力构build一个从官方的jboss / wildfly图像派生的自定义图像。
如果我只是添加.war文件并运行,它的工作是完美的,但是当我尝试添加一个自定义standalone-full.xml文件时出现问题
这是我的Dockerfile:
FROM jboss / wildfly:10.1.0.Final
COPY standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone- full.xml
COPY 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 “]
这是我的源代码目录:
链接到源目录内的ls -la命令的屏幕截图
按照build议,我给了standalone-full.xml文件755的权限。
但是,使用以下命令构build映像后:
docker构build-t示例应用程序。
并运行图像如下:
docker运行-it -p 8080:8080 -p 80:80 -p 443:443 sample-app
我收到以下错误:
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)
我执行到正在运行的容器中查看独立文件的文件权限:
链接到容器的/ opt / jboss / wildfly / standalone / configuration /目录中的ls -la命令的屏幕截图
如果在运行CMD指令之前将用户更改为root用户,我可以运行该应用程序,但这不是我认为的一个好做法:
FROM jboss / wildfly:10.1.0.Final
COPY standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone- full.xml
COPY sample.war / opt / jboss / wildfly / standalone / deployments /
USER根
CMD [“/opt/jboss/wildfly/bin/standalone.sh”,“-c”,“standalone-full.xml”,“-b”,“0.0.0.0”,“-bmanagement”,“0.0.0.0 “]
如何正确设置独立文件的权限,以便我可以使用“jboss”用户运行应用程序?
我也尝试更改Dockerfile中的权限,如下所示,以匹配其他文件的权限:
FROM jboss / wildfly:10.1.0.Final
USER根
COPY standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone- full.xml
RUN chown jboss:root /opt/jboss/wildfly/standalone/configuration/standalone-full.xml
USER jboss
COPY 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存储驱动程序
你已经configuration你的wildfly实例来监听TCP / IP端口号<1024。
事实上,端口80和443。
通常只有root用户有权在任何基于Unix的操作系统(包括Linux)上执行此操作。
- 在debian上安装docker – overlayfs不支持'overlay'
- 在Ruby中,将文本从远程主机复制到本地主机
- configuration一个uwsgi.ini文件,以便DJango项目在Docker容器中工作
- 从docker集装箱访问主机DNS
- Docker无法取得http://deb.debian.org/debian/dists/jessie/InRelease
- dockers / IBM bluemix中的openconnect(错误:TUNSETIFF失败:设备不适当的ioctl)
- Dockerfile连接到ODBC(例如HPE Vertica)安装程序
- 你如何设置一个有多个主节点的Docker组成的弹性search集群?
- 使用私有的svn + bower在dockerfile中不起作用