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

标签 macos tomcat docker boot2docker

这是我的 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

然后我构建它并尝试启动它:

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 的评论,向我们展示了实际发生的事情。

关于macos - 如何在 Docker 容器上部署 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448249/

相关文章:

macos - Docker:无法启动服务应用程序:OCI 运行时创建失败:

java - Tomcat Workers - 连接 Tomcat 和 Apache

docker - 在docker-compose服务之间进行通讯时遇到问题

docker - 错误 : Job failed (system failure): Cannot connect to the Docker daemon at unix:///var/run/docker. socks 。 docker 守护进程是否正在运行?在 Windows 10 上

xcode - 如何以编程方式启动/停止仪器(时间分析器)?

python - 在 Mac 上修复 Python

java - Tomcat + TomcatJDBC ServletContextListener 开启线程

docker - Jenkins Docker 管道退出代码 -1

c++ - Mac OS X 中的唯一硬件 ID

java - 在 Tomcat 中为 Spring MVC REST API 禁用默认错误页面