使用Dockerfile和docker-compose以及vcs的最佳实践

时间:2017-02-22 07:17:14

标签: api web docker project docker-compose

我对最佳做法有疑问。

假设我有一个在angularjs和api中开发的webfrontend来获取数据。我将这两个放在不同的存储库中。 现在我想把整个事情做好。我的想法是在每个项目中放置一个Dockerfile来指定它们的环境。到目前为止它很好,但当我还有一个docker-compose文件同时启动这两个服务时呢?首先应该在哪个回购中放置这个文件,然后我怎样才能保证图像始终是最新的?

1 个答案:

答案 0 :(得分:2)

您可以使用这样的结构:

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。 {?1}}标记会在有更改时重新创建您的图像,这样您可以在dockerfile(图像)发生更改时保持最新的构图。

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