Docker-compose和vcs使用Dockerfile的最佳实践

我有一个关于最佳实践的问题。

比方说,我有一个web前端开发的angularjs和API来获取数据。 我把这两个放在不同的仓库里。 现在我想要dockerize整个事情。 我的想法是将Dockerfile放在每个指定其环境的项目中。 到现在为止它很好,但是当我还有一个同时启动这两个服务的docker-compose文件时呢? 首先,我应该把这个文件放在哪个回放中,其次我该如何保证图像总是最新的?

你可以使用这样的结构:

project/ - project/docker-compose.yaml - project/frontend/ (contains Dockerfile + necessary files) - project/api/ (contains Dockerfile + necessary files) 

在你docker-compose.yaml你可以为每个图像写下这样的内容:

  frontend: build: ./frontend #folder in which Dockerfile of frontend is saved (to build the image) image: my-frontend:1.0 #give a name to your image container_name: frontend-container #containername when a container instance of your image is running 

要启动docker-compose你可以运行docker-compose up --build--build标签会在有更改时重新创build图像,以便在dockerfile(image)发生更改时保持最新的组合。

Docker-compose是从上到下的“阅读”。 因此,您首先在docker-compose.yaml描述的服务将首先创build。 我认为这是你的API,因为它可能独立存在,你的前端需要连接它。 有时你的第一个服务启动太慢,这意味着第二个服务已经启动,但找不到第一个服务(连接),并崩溃。 这可以通过使用一个wait-for-it.sh脚本来解决。 您的第二个服务将使用脚本并检查第一个服务何时启动。 当它启动时,它将开始自己的服务。