将Dockerfile与docker-compose.yml一起使用的最佳实践是什么?以及如何与詹金斯一起进行CI / CD?
我有2个微服务和一个Postgres数据库。我创建docker-compose.yml文件:
version: '3.1'
services:
myflashcards-service-dictionary:
image: myflashcards-service-dictionary
db:
image: postgres
restart: always
ports:
- 5434:5432
问题是在“图像:”部分写什么?我应该先跑步mvn clean install -DskipTests dockerfile:build
吗?但是图像名称又如何呢?
我想知道如何自动化整个CI / CD。
我有Dockerfile:
FROM openjdk:8-jdk-alpine
ADD target/myflashcards-service-dictionary.jar myflashcards-service-dictionary.jar
ENTRYPOINT exec java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=$profile -jar /myflashcards-service-dictionary.jar
EXPOSE 8092
我也有docker-compose.yml,但是docker-compose.yml如何知道应该使用哪个图像?
您能否简要概述如何将我的微服务应用程序部署到服务器的主要过程?
如何使用Dockerfile和docker-compose?这些文件什么时候需要?我们是否仅需要Dockerfile在Docker Hub中创建映像?
您的Dockerfile与Maven POM文件类似;这是Docker使用(docker build image-name .
)创建映像的一组说明。Dockerfile是必须的,没有一个就不能使用Docker。这就像尝试使用没有POM文件的Maven。
图像名称是您为Maven插件(
<repository>spotify/foobar</repository>
)提供的名称,docker build <image-name> .
也可以是您喜欢的任何名称。
Docker Compose是可用于管理服务的工具,该工具可由多个微服务组成。它允许用户创建编排计划,以后可以运行。这使用户可以编写Docker环境的复杂信息的脚本,例如卷,网络,重启策略等等。
Docker Compose文件是可选文件,可以用HashiCorp Nomad之 类的其他替代文件替换,但是Docker Compose是最易于使用的文件之一,如果您不熟悉Docker,请遵循此文件。
Docker Compose能够在运行时构建和使用映像(对开发有用)或运行存储库中已经存在的映像(生产推荐)。完整的Docker Compose文档应该说明如何编写一个。
在运行时构建
version: '3.1'
services:
myflashcards-service-dictionary:
build: path/to/folder/of/Dockerfile
db:
image: postgres
restart: always
ports:
- 5434:5432
运行预先存在的映像
version: '3.1'
services:
myflashcards-service-dictionary:
image: myflashcards-service-dictionary
db:
image: postgres
restart: always
ports:
- 5434:5432
可以在没有Docker Compose的情况下使用Dockerfile,唯一的区别是,由于它被视为单个服务部署,因此在生产中使用不切实际。据我所知,它不能与Docker Swarm一起使用
就CI / CD而言,您可以使用Dockerfile Maven Plugin之类的Maven插件。您可以在此处找到文档。然后可以将该映像推送到Docker Hub,AWS ECR甚至是自托管的存储库中(除非您对建立高度安全的网络感到满意,尤其是它不是内部网络,否则我不建议这样做)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句