如何从Docker,Dockerfile和Docker Compose开始?

马特利

将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中创建映像?

Praveen Premaratne

您的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Dockerfile和docker-compose.yml中编码的内容以在Docker环境中传递本地包

Dockerfile与docker-compose VOLUME

使用父目录和dockerfile进行构建时docker-compose生成错误

Docker Compose与Dockerfile-哪个更好?

docker-compose up容器开始订购

如何将docker-compose.yml转换为Dockerfile

如果docker-compose.yml和Dockerfile都指定具有优先级的env vars?

如何将Dockerfile转换为Docker Compose镜像?

在docker-compose.yml或dockerfile中创建Docker网络

如何使用docker-compose`geth init`并开始geth挖掘?

在开始xUnit测试之前如何调出docker-compose中指定的容器?

docker在dockerfile和docker-compose.yml中使用通用配置

Dockerfile,docker-compose和swarm模式生命周期

由于绑定安装而无法在Dockerfile和docker-compose中找到节点模块

Docker-compose redis:从fixture开始?

docker容器从Dockerfile运行,但不是从docker-compose运行

Dockerfile没有从docker compose传递参数

如何在Azure Portal中传递Dockerfile或docker-compose?

使用Docker compose传递Dockerfile的参数

Docker:Dockerfile与docker-compose.yml

如何使用 Docker 和 Docker Compose 从备份开始自动创建和运行“干净”的 SQL Server 数据库?

与 docker compose 开始的 redis 容器交互

`Dockerfile` 和 `docker-compose.yml` 之间的冲突/多个启动命令

mongo-express 不是从 docker-compose 文件开始的

如何为 docker-compose 和 DockerFile 设置不同的上下文

当主要 go 文件位于嵌套目录中时,如何解析 dockerfile 和 docker-compose?

Docker:除了 docker-compose.yml 之外,如何使用 Dockerfile

使用 docker-compose 和 dockerfile 創建 javaproject 時如何更改堆大小?

Dockerfile 和 Docker Compose 與 Java Spring Boot、Gradle 和 PostgreSQL