docker-compse部署docker容器示例

news/2025/12/1 0:19:31/文章来源:https://www.cnblogs.com/yilangcode/p/19290962

一、什么是 Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

 

作用:

通过一个名为 docker-compose.yml(或 compose.yaml)的配置文件,可以:

  • 用代码描述多个服务(如 Web 服务器、数据库、缓存等);
  • 定义它们之间的依赖关系、网络、卷(数据持久化)等;
  • 用一条命令(如 docker compose up)一键启动或停止整个应用栈。

 

注意:从 Docker Desktop 较新版本(特别是 v2.0 以后),docker-compose 功能被集成进 docker 命令,作为子命令使用。

这种形式称为 Compose V2,它是一个插件,语法几乎完全兼容,但命令格式略有不同。

 

场景           | 写法
旧版命令    | docker-compose
新版(V2)| 命令 docker compose
通用名称/文档中 | Docker Compose

 

一般来说,一个完整的项目就对应一个DockerCompose 文件-

定义容器之后,还需要去描述关于容器的一些参数信息。比如端口,内存大小等等。

前提:需要描述清楚容器信息。它才能够去帮助我们部署容器。

 

二、服务器如何安装配置 Docker Compose

查看安装信息-

docker compose version

image

如果没有信息,则单独安装,安装命令为:

sudo yum install -y docker-compose-plugin

 

三、创建 docker-compose.yml  文件

 建议名称最好是固定。

然后配置内容,示例如下-

version: '3.8' # 明确指定版本,避免兼容性问题

services:
mysql: # 服务名称
image: mysql:5.7 # 镜像名称
container_name: mysql # 容器名称
ports: # 宿主机:容器的映射端口
- "43157:3306"
environment: # 环境配置
TZ: Asia/Shanghai # 时区
MYSQL_ROOT_PASSWORD: 123456 # 数据库密码
volumes: # 挂载的路径和文件
- "/opt/u01/exam/mysql/my.cnf:/etc/mysql/my.cnf"
- "/opt/u01/exam/mysql/logs:/var/log/mysql"
- "/opt/u01/exam/mysql/data:/var/lib/mysql"
networks: # 加入的docker网络
- exam-net
restart: unless-stopped # 重启策略
redis:
image: redis:5.0.9
container_name: redis
ports:
- "6379:6379"
environment:
TZ: Asia/Shanghai
volumes:
- "/opt/u01/exam/redis/redis.conf:/usr/local/etc/redis/redis.conf"
- "/opt/u01/exam/redis/data:/data"
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: unless-stopped
networks:
- exam-net
web:
build:
context: ./java # 注意路径
dockerfile: Dockerfile # 注意路径
image: my-web:latest # 指定固定镜像名
container_name: web
ports:
- "8080:8080"
environment:
TZ: Asia/Shanghai
volumes:
- "/opt/u01/exam/java/logs:/app/logs"
networks:
- exam-net
depends_on:
- mysql
- redis
restart: unless-stopped # 重启策略
user: "1000:1000" # 显式指定 UID:GID-解决权限问题
nginx:
image: nginx:1.24.0
container_name: nginx
ports:
- "443:443"
volumes:
- "/opt/u01/exam/nginx/html:/usr/share/nginx/html" # 挂载静态文件目录
- "/opt/u01/exam/nginx/log:/var/log/nginx" # 挂载日志目录
- "/opt/u01/exam/nginx/sslkey:/etc/nginx/ssl:ro" # 挂载证书目录(只读) 你的 SSL 证书和私钥 不需要被容器修改
- "/opt/u01/exam/nginx/nginx.conf:/etc/nginx/nginx.conf" # 挂载主配置文件
- "/opt/u01/exam/nginx/conf.d:/etc/nginx/conf.d" # 挂载其他配置文件
logging:
driver: "json-file" # 明确指定使用 json-file 驱动
options:
max-size: "100m" # 单个日志文件最大 100MB
max-file: "30" # 最多保留 3 个日志文件(包括当前正在写入的)
tag: "{{.Name}}/{{.ID}}" # 日志标签,方便识别
networks:
- exam-net
depends_on:
- web
restart: unless-stopped # 重启策略
networks: # docker-网络设置
exam-net:
name: exam-network

image

 

 

说明:上面的配置中,会先创建网络,然后在启动各个容器服务,启动容器之后,会自动添加到docker创建的网络中。

同一台服务器上,各个服务之间就可以直接使用 容器的名称来相互访问。 

以mysql配置为例,以下为详细的配置讲解-

mysql: # 服务名称
image: mysql:5.7 # 镜像名称
container_name: mysql # 容器名称
ports: # 宿主机:容器的映射端口
- "43157:3306"
environment: # 环境配置
TZ: Asia/Shanghai # 时区
MYSQL_ROOT_PASSWORD: 123456 # 数据库密码
volumes: # 挂载的路径和文件
- "/opt/u01/exam/mysql/my.cnf:/etc/mysql/my.cnf"
- "/opt/u01/exam/mysql/logs:/var/log/mysql"
- "/opt/u01/exam/mysql/data:/var/lib/mysql"
networks: # 加入的网络
- exam-net
restart: unless-stopped # 重启策略

 

四、停止、启动服务常用命令

docker compose  up -d --build

命令解释:docker compose v2 版本命令使用docker compose ;

up 表示启动所有服务;

-d 表示在后台启动服务,即使退出当前窗口,服务还会继续运行。

--build 表示我在启动容器时,需要构建镜像,这一步不是必须的,有就添加,没有就不添加。

 

注意事项:只能在docker-compose.yml所在的同一级目录下,才能够执行docker compose命令

 

停止所有容器服务的命令为:

docker compose  down

 

个人服务器路径如下

exam/

-docker-compose.yml

-java(目录)

-mysql(目录)

-nginx(目录)

-redis(目录)

 

查看所有已经启动的容器信息:docker compose ps 

image

 

查看某个容器日志的命令

# 查看所有服务的日志

docker compose logs

# 查看某个特定服务的日志(例如 web)

docker compose logs web

image

 

单独重启某一个容器-

docker compose restart 容器名

docker compose restart nginx

 

实时跟踪某个服务的日志(类似 tail -f

docker compose logs -f <服务名>

docker compose logs -f nginx

 

基础命令-

image

 查看状态与日志-

image

 管理单个服务-

image

 构建与更新-

image

 其他实用命令-

image

 IT技术学习-优先推荐使用千问-专业,就是好用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/982425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Silver

将文件放进010里面,发现flag

客户端和服务端通信----buffer

客户端和服务端通信----bufferbuffer在网络编程中,操作系统底层 API(如 send()、recv())要求传入:一个 内存地址(指针) 一个 字节数(size) 但 C++ 中有多种数据类型(std::string、std::vector<char>、C 数组…

Scrum冲刺阶段 Day Six

一、站立会议纪要1. 已完成工作 实现启用/禁用用户接口 后台功能 执行接口测试 + 联调验证 测试执行--- 2. 今日计划工作 开发分享访问前端页面 实现分享链接生成与提取码验证接口 实现分片上传、秒传与MD5校验完整逻辑…

156 电脑没有网卡驱动怎么办

电脑没有网卡驱动怎么办 在重装系统之后,我们可能遇到新系统没有合适的网卡驱动,导致系统无法联网的情况。这时我们可以使用连接网线或者使用手机共享网络的方法。如何使用手机共享网络 手机共享网络的本质是个人热点…

134 Gravesoft网页汉化5:Fix WPA Registry——修复WPA注册表

Gravesoft网页汉化5:Fix WPA Registry——修复WPA注册表https://gravesoft.dev/fix-wpa-registry Fix WPA Registry 修复WPA注册表在某些情况下,系统可能会在HKEY_LOCAL_MACHINE\SYSTEM\WPA处损坏WPA注册表项,这可能…

76 为什么Windows系统没有A盘和B盘?系统盘一定是C盘吗?

为什么Windows系统没有A盘和B盘?系统盘一定是C盘吗? 在如今的Windows系统中,大多数用户都会看到硬盘的默认盘符是C盘,而不是A盘或B盘.这背后有着一段有趣的历史.那么,为什么Windows系统选择C盘作为默认盘符?A盘和B盘…

11月阅读笔记(3)

程序员修炼之道》中 “未雨绸缪” 的思维,让我在代码异常处理上有了全新认知。之前写 C++ 作业时,总想着 “先实现功能再说”,比如写一个 “文件读取图书信息” 的函数void readBookFromFile(const string& fil…

攻防世界view_source

攻防世界view_source 1根据题目提示得知是网站源代码 23打开后将网站刷新一下便可看到源代码 4flag:cyberpeace{0caefd5b27ad046a5564ba7169f5350a}

133 Gravesoft网页汉化4:In-place Repair Upgrade——本地修复升级Windows

Gravesoft网页汉化4:In-place Repair Upgrade——本地修复升级Windowshttps://gravesoft.dev/in-place_repair_upgrade In-place Repair Upgrade 本地修复升级Windows(保存文件和应用程序)使用Windows ISO文件进行本…

154 如何在无密码时远程控制域内电脑

如何在无密码时远程控制域内电脑 在一般情况下,使用微软提供的远程桌面功能,我们可以在局域网内控制拥有账号密码的其他Windows系统专业版,企业版,以及专业工作站版本系统的电脑。 但是在某些特殊情况下,我们希望…

130 Gravesoft网页汉化1: 国外优秀激活工具MAS制作团队的Windows系统技术员说明文档

Gravesoft网页汉化1: 国外优秀激活工具MAS制作团队的Windows系统技术员说明文档MASSGRAVE团队出品的MAS脚本是一款优秀的开源Windows激活工具.事实上,MASSGRAVE团队不仅编写了MAS激活工具,还无偿为Windows系统编写了如…

38 把Office整个移动到D盘!

把Office整个移动到D盘! Microsoft Office 是众所周知的最为优秀的办公软件,是微软的力作之一. 然而,当下最为主流的 office 2019/2021/365 同时也因为安装占用过大C盘空间而饱受诟病. 对于office 2019,它的安装文件达…

63 Windows PE秒变Windows RE?到底是谁在用谁?

Windows PE秒变Windows RE?到底是谁在用谁? 评论区有朋友留言一个很有意思的问题. 我们使用Windows原版ISO启动电脑后,有一个界面是这样的:点击 修复计算机,之后出现了这个界面:那么问题就是,这个界面和WindowsRE的界…

Windows系统概述及磁盘分区

Windows系统概述及磁盘分区 Windows系统概述 Windows系统作为世界上使用者最多,最受欢迎的操作系统,值得热爱者们进行详细的研究.我们将分别介绍Windows系统的安装,维护,优化,以及进阶的高级操作.本教程所有的操作均使…

92 Windows 系统中的硬连接、符号链接和目录链接:原理与应用

Windows 系统中的硬连接、符号链接和目录链接:原理与应用 今天笔者将带你深入浅出地了解Windows系统中的三种文件链接:硬连接(Hard Link)、符号链接(Symbolic Link)以及目录链接(Directory Junction)。虽然它们…

112 恢复 Windows 11 经典右键菜单

恢复 Windows 11 经典右键菜单 Windows11的右键菜单为很多人所诟病为"不符合用户习惯","反人类","丑陋","响应速度慢"等等. 如果你也这样认为,那么今天的文章可以帮你把Windo…

151 离线安装Office的逆天技法:一个镜像,通杀所有版本

离线安装Office的逆天技法:一个镜像,通杀所有版本 我曾经详细的介绍过如何使用setup.exe在线下载安装Office。但是这种方法很难控制安装office的组建类型和位宽等细节。有的时候,待安装Office办公套件的电脑甚至处于…

61 把PE系统安装到VHD里?玩的够花,但比PE to Go更快

把PE系统安装到VHD里?玩的够花,但比PE to Go更快! 我之前讲过把PE系统直接释放到U盘里面作为PE to Go使用.网友的思维是强大的,前几天有一位网友就想把PE系统安装到VHD里面.这次我们就来实操一下.原理解析 把PE系统安…

149 物理扇区,逻辑扇区,簇,4K对齐等基础概念介绍

物理扇区,逻辑扇区,簇,4K对齐等基础概念介绍 我们在使用disKgenius软件操作磁盘的时候,经常能遇到涉及到磁盘底层的操作,比如物理扇区,逻辑扇区,簇,4K对齐,MFT表,文件系统等等磁盘的基础概念。今天笔者来详细…

专题:2025半导体行业核心趋势与市场动态报告:AI驱动、先进封装、SiC、掩膜版|附130+份报告PDF、数据、可视化模板汇总下载

原文链接:https://tecdat.cn/?p=44426原文出处:拓端抖音号@拓端tecdat引言 全球半导体行业正站在“技术突破与地缘博弈”的十字路口:AI驱动的算力需求催生指数级增长,而产业链分工重构与技术壁垒形成双重约束,行…