Docker Compose 入门

embedded/2024/9/29 5:26:32/

想象一下在服务器上运行静态页面的场景。对于这项任务,NGINX 服务器是一个不错的选择。我们在 static-site/index.html 路径下有一个简单的 HTML 文件:

通过使用 Docker,我们将使用以下官方镜像运行 NGINX 服务器

docker run --rm -p 8080:80 --name nginx-compose-01 nginx

让我们来分析一下:

Docker Engine 将运行一个 Docker NGINX 镜像。

  • 映像上的默认端口是 80,因此我们将把它本地映射为 8080,以避免使用特权端口。
  • 我们指定的名称将保持不变,以便与容器的交互更加方便。
  • 通过使用 -rm 参数,我们可以确保一旦完成任务并停止容器容器就会被删除。

我们的容器已启动并运行。在另一个终端会话中,我们应该访问默认的 NGINX 页面:

curl 127.0.0.1:8080

既然已经成功运行了 NGINX,我们就需要调整命令,以便使用定制的 HTML 页面。一个简单快捷的方法是将文件挂载到容器的路径上。让我们使用 Ctrl + C 退出上一条命令,然后完善上一条命令:

docker run --rm -p 8080:80 --name nginx-compose -v $(pwd)/static-site:/usr/share/nginx/html nginx

 不出所料,页面会更改为我们指定的页面:

curl localhost:8080/index.html

现在,我们已经具备了将此应用程序迁移到 Compose 所需的一切。我们将为默认 NGINX 安装创建一个 Compose 文件:

services:nginx:image: nginxports:- 8080:80

 

让我们来分析一下我们刚才所做的:

  • 服务名称为 NGINX。
  • 映像与 NGINX 映像相同。
  • 端口与之前使用的端口相同。

内容应保存到名为 docker-compose.yaml 的文件中。

接下来,我们将在终端上执行 Compose 命令:

docker compose up

不出所料,HTTP 请求的结果与运行 Docker 容器时的结果相同。

文件的命名很重要。我们执行了 Compose 命令来启动 Compose 文件,但并没有指定要使用的文件。与 docker build 和 Dockerfile 的情况一样,通过在一个目录中运行 docker compose,Compose 会搜索一个名为 docker-compose.yaml 的文件。如果该文件存在,它就会被当作默认的 Compose 文件。请注意,我们并不局限于一个文件名;我们可以为我们的 Compose 应用程序使用不同的文件名。在接下来的文章中,我们可以为 Compose 文件使用不同的名称,并使用 -f 选项运行应用程序。

接下来,我们将通过 Compose 配置挂载自定义 HTML 页面:

services:nginx:image: nginxports:- 8080:80volumes:- ./static-site:/usr/share/nginx/html

 之前的 Docker 命令看似简单,但在幕后,它创建了一个指向文件系统路径的 Docker 卷,然后将其附加到容器上。这同样适用于 Compose。我们指定一个指向文件系统的卷。然后,根据我们的位置,将其挂载到容器的目录中:

curl localhost:8080/index.html

不出所料,结果与 Docker 示例的结果相同。

回顾本节,我们使用 Docker CLI 运行了一个 NGINX 实例,并为使用的 Docker 命令参数添加了相应的 YAML 部分,从而过渡到了 Compose。

 


http://www.ppmy.cn/embedded/55583.html

相关文章

43.三倍游戏

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/390 题目描述 三倍游戏是一种单人游戏。玩…

Windows环境本地部署开源在线演示文稿应用PPTist并实现远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring MVC数据绑定和响应——复杂数据绑定(四)JSON数据绑定

一、消息转换器—HttpMessageConverter接口 客户端不同的请求,HttpServletRequest中数据的MediaType可能会不同,如果想将HttpServletRequest中的数据转换成指定对象,或者将对象转换成指定格式的数据,就需要使用对应的消息转换器来…

责任链模式(设计模式)

责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理…

Qt 实战(6)事件 | 6.2、事件过滤器

文章目录 一、事件过滤器1、什么是事件过滤器?2、如何实现事件过滤器?3、应用示例4、总结 前言: 在Qt的事件处理机制中,事件过滤器(Event Filter)是一种非常强大且灵活的工具,它允许开发者在一个…

算法力扣刷题记录 十七【454题.四数相加II】

前言 哈希篇&#xff0c;继续。 记录 十七【454题.四数相加II】 一、题目阅读 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j…

【Qt】初识QtQt Creator

一.简述Qt 1.什么是Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实现…

基于Cardinal的AWD攻防平台搭建与使用以及基于docker的题目环境部署

关于 CTF 靶场的搭建与完善勇师傅前面已经总结过了&#xff0c;参考&#xff1a; CTF靶场搭建及Web赛题制作与终端docker环境部署_ctfoj搭建-CSDN博客 基于H1ve一分钟搭好CTF靶场-CSDN博客 Nginx首页修改及使用Nginx实现端口转发_nginx 修改欢迎首页-CSDN博客 关于H1ve导…