如何在Docker容器上部署Web服务

这是我的Dockerfile:

#Build java web app container image FROM ubuntu MAINTAINER wangyao #Make java and tomcat install directory RUN mkdir /usr/local/java RUN mkdir /usr/local/tomcat #Copy jre and tomcat into image ADD jdk1.8.0_45.jdk /usr/local/java/ ADD apache-tomcat-7.0.62 /usr/local/tomcat/ ENV JAVA_HOME=/usr/local/java/Contents/Home CMD cd /usr/local/tomcat;./bin/catalina.sh run #Expose http port EXPOSE 8080 

然后我build立它,并尝试启动它:

 wangyaos-MBP-3:flexcloud wangyao$ ls Dockerfile apache-tomcat-7.0.62 jdk1.8.0_45.jdk wangyaos-MBP-3:flexcloud wangyao$ docker build -t flexcloud . Sending build context to Docker daemon 355.6 MB Sending build context to Docker daemon ........ Successfully built 1f824d246b39 wangyaos-MBP-3:flexcloud wangyao$ docker run -i -t flexcloud Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/Contents/Home Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar /usr/local/java/Contents/Home/bin/java: 20: /usr/local/java/Contents/Home/bin/java: Syntax error: word unexpected (expecting ")") wangyaos-MBP-3:flexcloud wangyao$ 

这个word unexpected (expecting ")")是什么意思?

我用$ ./bin/catalina.sh run没有docker,我可以运行它,但我为什么不能在docker集装箱上运行它?

如注释所示,错误Syntax error: word unexpected (expecting ")")是一个shell脚本错误,这意味着/usr/local/java/Contents/Home/bin/java实际上并不是java可执行文件。

使用docker exec -it <container> bash访问容器并执行/usr/local/java/Contents/Home/bin/java -version显示了实际进行的事情,按照@ KingOfSocket的评论。