当前位置: 首页 > 知识库问答 >
问题:

Docker是否使用单个Dockerfile运行多个映像?

艾哲
2023-03-14

我正在尝试在我的环境中测试和使用docker。这是我访问tomcat时的Dockerfile(http://localhost: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-1tomcat而不设置mysql,我就可以访问http://192.168.99.100:8080/或我的应用程序http://192.168.99.100:8080/spring-rest我的文件中是否缺少任何内容?

谷歌搜索=

共有1个答案

任元青
2023-03-14

关键问题是:我可以在单个Dockerfile中使用多个from...

如果您这样做,您将使用一个新的docker特性,称为多级构建。此功能允许您分多个阶段构建图像,其中每个FROM从一个新的基础层开始,放弃您以前所做的一切。

这不是您想要做的,因为当您从mysql:5.5中执行时,您会从该行上方松开整个tomcat部分。

您可以构建一个包含tomcat和mysql的docker映像(只使用中的一条指令),但我建议不要这样做。Docker图像应该只处理一个问题。

因此,实际上最好的解决方案是创建两个Docker映像(2个Dockerfile),一个用于tomcat,一个用于mysql,然后使用docker-comment将这两个映像作为复合文件运行。

 类似资料:
  • 假设我在同一个公共Docker映像上安装了一个Web服务器和一个数据库服务器,是否可以同时运行它们,就像它们在同一个虚拟机中运行一样? 它正在运行<代码>docker run吗

  • PROJECT_B中的docker-compose.yml如下所示: 每个项目都可以单独运行,工作良好。但是,如果我们想要更改PROJECT_A和PROJECT_B之间的api,我们需要运行这两个项目,并将它们链接在一起以测试我们的代码。现在我们想写一个开发工具包项目,可以运行这两个项目,并链接他们,如果需要。最好的方法是什么?

  • 问题内容: 执行多个: 加入他们: 每个层都创建一个图层,因此我一直以为图层越少越好,因此越好。 当a 删除前一个(即)添加的内容时,这显然是正确的,但是在每个都添加了内容的情况下,我们需要考虑以下几点: 层应该只是在前一层之上添加差异,因此如果后一层没有删除在前一层中添加的内容,那么这两种方法之间就没有太多的磁盘空间节省优势… 层是从Docker Hub并行拉出的,因此,尽管可能稍大一些,但理论

  • 我现在不知道如何写一个合适的方法来测试这种行为。请不要投反对票... 我现在有一个java类负责处理和向多个数据库添加数据。每个数据库保存相同的数据,但处理方式不同(例如,使用不同的插值速率进行插值)。 所以我运行程序(点击绿色矩形),修改参数(插值率)并运行程序。所以我有两个进程运行(因为大约。这就是为什么我不想冒任何中断的风险,担心数据库被搞砸了)。 我的问题是:这个修改是否适用于已经运行的进

  • 问题内容: 我正在使用在3个不同的docker上运行的应用程序: 第一个是可通过REST API调用的服务器HTTP 第二个是rabbitmq 第三个是工人 整个应用程序使用 真的很简单:) 我想使其具有可伸缩性,并且独立于其他应用程序运行整个应用程序的多个实例(3个docker映像),然后放置一个负载平衡器,例如它将重定向到其中一个应用程序。 我看到我可以使用它,但是问题是可以缩放容器,但是我真

  • 问题内容: 当您有一个用于数据库的Dockerfile,一个用于应用程序服务器的Dockerfile等时,如何组织属于项目的Dockerfile?您是否在源代码中创建了某种层次结构?一个大型企业项目不能仅由一个Dockerfile组成吗? 问题答案: 这个答案已经过时了。无花果不再存在,已经被Dockercompose取代。