docker compose基本使用以及示例

一、docker-compose模板文件

字段含义
build指定Dockerfile所在的文件夹路径
image指定为镜像名称或镜像ID
container_name指定容器模式
depends_on指定多个服务之间的依赖关系
ports端口映射
command覆盖容器启动后默认执行的命令
entrypoint覆盖容器中默认的入口命令
env_file从文件中获取环境变量
environment设置环境变量
expose暴露端口,但不映射到宿主机
restart指定重启策略
healthcheck指定检测应用健康状态的机制
volumes数据卷所挂载路径设置
extends基于其他模板文件进行扩展
networks所加入的网络
ulimits指定容器的ulimits限制值

二、docker compose常用命令

命令含义
docker compose up启动所有服务(-d 后台运行)
docker compose down停止并删除容器(-v 同时删除数据卷)
docker compose config校验和查看compose文件的配置信息
docker compose exec在一个运行中的容器内执行给定命令
docker compose logs查看服务容器的输出
docker compose pause暂停一个服务容器
docker compose restart重启项目中的服务
docker compose ps列出项目中目前的所有容器
docker compose top显示服务栈中正在运行的服务

三、docker-compose示例

部署discuz论坛和wordpress博客,使用adminer管理数据库。

1、编写docker-compose.yml:

[root@openEuler-4 ~]# mkdir discuz_wordpress && cd discuz_wordpress
[root@openEuler-4 discuz_wordpress]# vim docker-compose.yml
name: discuz_wordpress
services:adminer:container_name: adminerdepends_on:db:condition: service_startedrequired: trueimage: adminernetworks:mynetwork:ipv4_address: 172.18.0.15ports:- mode: ingresstarget: 8080published: "8080"protocol: tcprestart: alwaysdb:command:- --character-set-server=utf8- --collation-server=utf8_general_cicontainer_name: mysql57environment:MYSQL_DATABASE: wordpressMYSQL_PASSWORD: wordpressMYSQL_ROOT_PASSWORD: "123456"MYSQL_USER: wordpressimage: mysql:5.7networks:mynetwork:ipv4_address: 172.18.0.10restart: unless-stoppedvolumes:- type: volumesource: db_datatarget: /var/lib/mysqlvolume: {}discuz:container_name: discuzdepends_on:db:condition: service_startedrequired: trueenvironment:DISCUZ_DB_HOST: db:3306image: tencentci/discuznetworks:mynetwork:ipv4_address: 172.18.0.12ports:- mode: ingresstarget: 80published: "80"protocol: tcprestart: unless-stoppedvolumes:- type: volumesource: discuz_datatarget: /var/www/htmlvolume: {}wordpress:container_name: wordpressdepends_on:db:condition: service_startedrequired: trueenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_NAME: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_USER: wordpressimage: wordpress:latestnetworks:mynetwork:ipv4_address: 172.18.0.11ports:- mode: ingresstarget: 80published: "8001"protocol: tcprestart: unless-stoppedvolumes:- type: volumesource: wp_datatarget: /var/www/htmlvolume: {}
networks:mynetwork:name: discuz_wordpress_mynetworkdriver: bridgeipam:driver: defaultconfig:- subnet: 172.18.0.0/24gateway: 172.18.0.1
volumes:db_data:name: discuz_wordpress_db_datadiscuz_data:name: discuz_wordpress_discuz_datawp_data:name: discuz_wordpress_wp_data

2、启动服务:

[root@openEuler-4 discuz_wordpress]# docker compose up -d
[root@openEuler-4 discuz_wordpress]# docker compose ps
NAME        IMAGE              COMMAND                  SERVICE     CREATED          STATUS          PORTS
adminer     adminer            "entrypoint.sh docke…"   adminer     15 seconds ago   Up 12 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
discuz      tencentci/discuz   "docker-php-entrypoi…"   discuz      15 seconds ago   Up 13 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp
mysql57     mysql:5.7          "docker-entrypoint.s…"   db          15 seconds ago   Up 14 seconds   3306/tcp, 33060/tcp
wordpress   wordpress:latest   "docker-entrypoint.s…"   wordpress   15 seconds ago   Up 13 seconds   0.0.0.0:8001->80/tcp, :::8001->80/tcp

3、测试

输入http://IP:80访问discuz:

输入http://IP:8001访问wordpress:

输入http://IP:8080访问adminer:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源3D 动态银河系特效:Vue 与 THREE.JS 的奇幻之旅

一、Vue 与 THREE.JS 简介 (一)Vue Vue 是一个流行的 JavaScript 框架,它采用了组件化的设计思想,使得开发人员可以轻松地构建复杂的用户界面。Vue 提供了丰富的功能和工具,如数据绑定、指令、组件通信等&#xff0c…

EXISTS 和 NOT EXISTS 、IN (和 NOT IN)

在 SQL 中,EXISTS、NOT EXISTS 和 IN 都是用于子查询的条件运算符,用于根据子查询的结果过滤主查询的行。它们之间的区别主要体现在工作方式、效率、对 NULL 值的处理以及适用场景上。 1. EXISTS 和 NOT EXISTS 作用: EXISTS: 检查子查询是…

医疗标准集中标准化存储与人工智能智能更新协同路径研究(上)

摘要 为了提高医疗系统中文件管理的效率与质量,本文围绕医疗文档的集中化标准化存储与人工智能驱动的智能更新,构建了一种协同策略研究框架。通过分析医疗文档管理的痛点,结合集中化存储与AI技术的协同路径,提出了一种基于标准化文档处理与智能更新的协同优化方案。研究发现…

c# 比较两个list 之间元素差异

在C#中,比较两个List之间元素的差异通常有多种方法,具体取决于你想如何表达这些差异(例如,找出存在于一个列表中但不在另一个列表中的元素)。下面是一些常用的方法: 1. 使用Except方法 Except方法可以找出…

使用 KernelSU + PlayIntegrityFix 解决Root后ChatGPT不能使用的问题

参考文章: [GUIDE] 🛡️ How to Pass Strong Integrity on Android (Step-by-Step Guide) 刚从iPhone转到Android的用户,买了一加13T,享受刷机折腾的乐趣,结果安装了ChatGPT以后,发现无法使用,报错&#xf…

STM32安全固件升级:使用自定义 bootloader 实现SD卡固件升级,包含固件加密

前言 在 STM32 嵌入式开发中,Bootloader 是一个不可或缺的模块。ST 公司为 STM32 提供了功能完备的官方 Bootloader,支持多种通信接口(如 USART、USB DFU、I2C、SPI 等),适用于标准的固件更新方案。 然而&#xff0c…

变现与自我提升:加法与乘法的智慧抉择

在当今这个快速发展的时代,无论是追求财富的变现,还是致力于个人能力的提升,我们都会面临一个关键问题:是分类分步地逐步实现,还是将多种要素混合在一起?是简单地做加法,还是复杂的乘法运算&…

Outlook总是提示登录微软,怎么办?

1.问题描述 我的Outlook2021邮箱有一个问题,打开邮箱之后,总是提示让登录Microsoft的账号(如图所示),因为个人和公司都没有连接微软,只能关闭,但点击关闭之后,就提示必须需要键入ex…

探秘 VR 逃生救援技术的奇妙世界​

VR 逃生救援技术之所以能为我们带来如此震撼和逼真的体验,背后离不开一系列先进技术的支撑。在 VR 逃生救援体验中,其核心在于利用虚拟现实技术,构建出高度逼真的火灾场景,让参与者仿佛身临其境。​ 在构建火灾场景方面&#xff0…

nt!MiFlushSectionInternal函数分析从nt!IoSynchronousPageWrite函数到Ntfs!NtfsFsdWrite函数

第一部分: while (TRUE) { KeClearEvent (&IoEvent); Status IoSynchronousPageWrite (FilePointer, Mdl, (PLARGE_INTEGER)&StartingOffset…

linux网络编程socket套接字

套接字概念 Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。 既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,L…

【51单片机5毫秒定时器】2022-6-1

缘由单片机的代码,求大家来帮帮我-编程语言-CSDN问答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号 unsigned char Js0, miao0;//中断…