将 Dockerfile 与 docker-compose 和 vcs 结合使用的最佳实践

问题描述 投票:0回答:1

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

假设我有一个用 AngularJS 开发的 Web 前端和一个用于从中获取数据的 API。我将这两个放在不同的存储库中。 现在我想将整个事情进行docker化。我的想法是在每个项目中放置一个指定其环境的 Dockerfile。到目前为止还好,但是当我还有一个同时启动这两个服务的 docker-compose 文件时该怎么办?首先我应该将此文件放在哪个存储库中,其次我如何确保图像始终是最新的?

docker docker-compose project
1个回答
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
--build
标签将在发生更改时重新创建您的图像,以便您可以在 dockerfile(图像)发生更改时使您的撰写保持最新状态。

Docker-compose 是从上到下“阅读”。因此,您在

docker-compose.yaml
中首先描述的服务将首先创建。我认为这是你的 API,因为它可能单独存在,并且你的前端需要与之连接。有时,您的第一个服务启动得太慢,这意味着第二个服务已经启动,但找不到第一个服务(要连接)并且崩溃。这可以通过使用 wait-for-it.sh 脚本来解决。您的第二个服务将使用该脚本并检查第一个服务何时启动。当它启动时,它将启动自己的服务。

© www.soinside.com 2019 - 2024. All rights reserved.