这就是事情。我有以下Dockerfile:
DOCKERFILE
FROM centos:centos7
MAINTAINER Legos
ADD epel-release-7-9.noarch.rpm /etc/extras/epel-release-7-9.noarch.rpm
RUN rpm -Uvh /etc/extras/epel-release*rpm
# Install prepare infrastructure
RUN yum -y update && \
yum -y install wget && \
yum -y install tar && \
yum -y install haveged && \
yum -y install rng-tools
RUN chkconfig haveged on
# Prepare environment
ADD jdk* /opt/
WORKDIR /opt/
RUN yum localinstall -y "jdk-8u131-linux-x64.rpm"
RUN echo "1"|alternatives --config java
ENV JAVA_HOME /usr/java/jdk1.8.0_131
#ENV JAVA_OPTS "-Djava.security.egd=/dev/./urandom"
ENV CATALINA_HOME /opt/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/scripts
# Install Tomcat
ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.5.15
RUN wget http://www-eu.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && \
tar -xvf apache-tomcat-${TOMCAT_VERSION}.tar.gz && \
rm apache-tomcat*.tar.gz && \
mv apache-tomcat* ${CATALINA_HOME}
RUN chmod +x ${CATALINA_HOME}/bin/*sh
# Create Tomcat admin user
ADD create_admin_user.sh $CATALINA_HOME/scripts/create_admin_user.sh
ADD tomcat.sh $CATALINA_HOME/scripts/tomcat.sh
ADD webapps/gireUsuarios.war $CATALINA_HOME/webapps/gireUsuarios.war
ADD conf/tomcat-users.xml $CATALINA_HOME/conf/tomcat-users.xml
ADD conf/Catalina/localhost/manager.xml $CATALINA_HOME/conf/Catalina/localhost/manager.xml
RUN chmod +x $CATALINA_HOME/scripts/*.sh
# Create tomcat user
RUN groupadd -r tomcat && \
useradd -g tomcat -d ${CATALINA_HOME} -s /sbin/nologin -c "Tomcat user" tomcat && \
chown -R tomcat:tomcat ${CATALINA_HOME}
WORKDIR /opt/tomcat
EXPOSE 8080 8009 8443 9100-9120 4369 80
RUN yum clean all
USER tomcat
CMD ["tomcat.sh"]
TL; DR:它是使用Tomcat 8.5和Java 1.8的CentOS 7计算机的映像。 ' tomcat.sh'只需在配置中创建用户后运行catalina.sh,所以对此没什么好说的。
事情就是这样:当我创建一个容器时,容器会在部署我传递的.war文件时冻结。我尝试了两个启动其他.war文件,结果是肯定的,我尝试在我的机器Tomcat 8.5中部署这个有问题的.war文件(一个直接开箱即用的Tomcat,只不过是添加了经理gui用户),它正在成功部署。
所以,问题是:任何想法为什么Tomcat会在Docker容器中部署期间冻结?我尝试了JAVA_OPTS = -Djava.security.egd = / dev /./ urandom解决方案,据说可以帮助解决这类事件,但它并没有起作用。建议?
答案 0 :(得分:0)
解决了它。我在JAVA_OPTS中添加了额外的参数,并且它有效。最终的JAVA_OPTS是这样的:
Public Class Form5
Dim CheckButton, skip_ad_button As HtmlElement
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
WebBrowser1.ObjectForScripting = True
WebBrowser1.ScriptErrorsSuppressed = True
End Sub
Private Sub Form5_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
skip_ad_button = WebBrowser1.Document.GetElementById("skip_ad_button")
CheckButton = WebBrowser1.Document.GetElementById("skip_ad_button")
If Not skip_ad_button Is Nothing Then
skip_ad_button.InnerText = "skip_ad_button" 'Replace testID by the ID you want
End If
If Not CheckButton Is Nothing Then
'some code here
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
WebBrowser1.Navigate("http:\\mediaads.eu/proxy")
End Sub
End Class