2017-03-09 138 views
4

更新:清理並直接指出問題和解決方案。Docker Tomcat用戶配置不起作用

問題:

多克爾-tomcat的正確安裝和運行,除了在管理器應用程序的訪問403錯誤。這似乎也是我的碼頭tomcat找不到我的tomcat-users.xml配置。

SOLUTION

感謝FarhadSanket的答案。

[文件]:

Dockerfile

FROM tomcat:8.5.11 
MAINTAINER Borgy Manotoy <[email protected]> 

# Update Apt and then install Nano editor (RUN can be removed) 
RUN apt-get update && apt-get install -y \ 
    nano \ 
&& mkdir -p /usr/local/tomcat/conf 

# Copy configurations (Tomcat users, Manager app) 
COPY tomcat-users.xml /usr/local/tomcat/conf/ 
COPY context.xml /usr/local/tomcat/webapps/manager/META-INF/ 

Tomcat用戶配置(CONF/Tomcat的users.xml中)

<tomcat-users xmlns="http://tomcat.apache.org/xml" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" 
       version="1.0"> 
    <role rolename="manager-gui"/> 
    <role rolename="manager-script"/> 
    <user username="admin" password="password" roles="manager-gui,manager-script" /> 
</tomcat-users> 

應用程序上下文(web應用/經理/ META- INF/context.xml的)

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiResourceLocking="false" privileged="true" > 
    <!-- 
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
     allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 
    --> 
</Context> 

[STEPS &命令]:

  1. 建立泊塢圖片

    搬運工建立-t borgymanotoy /我-Tomcat的碼頭工人。

  2. 運行圖片(MY-Tomcat的碼頭工人和設置端口8088)

    搬運工運行--name MY-Tomcat的搬運工容器-p 8088:8080 - 它-d borgymanotoy/MY-tomcat-搬運工

  3. 進入容器的慶典(檢查通猛砸容器內的文件)

    泊塢窗EXEC -IT biyahe-Tomcat的搬運工容器的bash

回答

1

請指定端口,當你做一個docker run像(我相信mine/tomcat-version是你的形象的名字),

docker run -p 8000:8080 -it -d --name MyContainerName mine/tomcat-version

然後使用訪問管理器頁面,

http://<ipaddress>:8000/manager/html 

獲取主機的IP地址在碼頭需要執行docker-machine ip

添加信息:您也可以使用以下命令進入容器,

如果您要檢查不同的東西,如Tomcat日誌,conf文件

docker exec -it MyContainerName bash

+0

我忘了說明我已經將端口設置爲8088併爲容器指定了名稱。感謝'碼頭執行官'...我需要這個在容器內工作。 –

+0

Np ....訪問管理頁面時會出現什麼錯誤? – ProgrammerBoy

+0

403錯誤,它似乎沒有看到我的tomcat-users.xml中的更改,儘管它已被應用。我需要改變context.xml,如farhad在#1中的答案所示,現在它可以工作:)謝謝你們! –

3

首先,你需要在容器中暴露你的應用程序,讓您可以從dockerhost /網絡連接。

docker run -d -p 8000:8080 tomcat:8.5.11-jre8 

您需要更改2個文件才能從遠程主機訪問漫畫者應用程序。 (泊塢主機上的瀏覽器被認爲是遠程的,只接收的在容器上的環回包被視爲本地爲Tomcat)

  1. /usr/local/tomcat/webapps/manager/META-INF/context.xml注註釋部分。

    <Context antiResourceLocking="false" privileged="true" > 
    <!-- 
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 
    --> 
    

請注意註釋部分。

  • /usr/local/tomcat/conf/tomcat-users.xml當您在問題說明。

    <tomcat-users xmlns="http://tomcat.apache.org/xml" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" 
          version="1.0"> 
    <role rolename="manager-gui"/> 
    <role rolename="manager-script"/> 
    <user username="admin" password="password" roles="manager-gui,manager-script" /> 
    

  • 爲了使文件的更改在容器中,您可以嘗試建立自己的形象,但我建議使用泊塢窗卷或綁定安裝。

    +0

    感謝隊友,它現在有效......我缺乏#1。 –