我正在尝试为我的环境测试并使用docker。这是我的Dockerfile
当我访问tomcat(http://localhost:8080
)时,出现问题This site can’t be reached
。
注意=>对于窗口,我使用http://192.168.99.100:8080/
。
构建
docker build -f Dockerfile -t docker-spring-rest .
运行
docker run -p 8080:8080 -p 3306:3306 docker-spring-rest
Dockerfile
#Prat-1 tomcat
FROM tomcat:8.5.35
COPY ./target/spring-rest.war /usr/local/tomcat/webapps/
EXPOSE 8080
#Prat-1 tomcat
FROM mysql:5.5
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE spring-rest
COPY ./DB.SQL /docker-entrypoint-initdb.d/
一个奇怪的事情是,如果我仅设置Part-1 tomcat
而没有mysql
,则可以访问http://192.168.99.100:8080/
或我的应用程序http://192.168.99.100:8080/spring-rest
我的文件中是否缺少任何内容?
使用Google搜索=>我检查了此tomcat-mysql参考。为什么他们使用apt-get
来安装,因为docker已经有多个映像?
我可以在单个FROM
中使用多个FROM tomcat, FROM mysql, FROM xxx
像Dockerfile
吗?
答案 0 :(得分:1)
关键问题在这里:“我可以在单个Dockerfile中使用多个FROM
吗?”。
如果这样做,则您正在使用名为multistage-build的新docker功能。此功能使您可以分多个阶段构建图像,其中每个FROM
都从一个新的基础层开始,丢弃您之前所做的一切。
这不是您要执行的操作,因为当您执行FROM mysql:5.5
时,会从该行上方松开整个tomcat部分。
您可以构建一个包含tomcat和mysql的docker映像(仅使用一个FROM
)指令,但是我建议不要这样做。
Docker images are supposed to deal with one concern only。
因此,确实最好的解决方案是创建两个Docker映像(2个Dockerfile),一个用于tomcat,一个用于mysql,然后使用docker-compose将两个作为组合运行。