【docker-compose】安装及配置
目录
- 安装
- 在线安装
- 离线安装
- 配置
- mysql5.7
- bitnami/mysql8.3
- redis
- web前后台分离部署
- 前端https(SSL)配置
- nginx动态传参
- 资源限制:内存、cpu
- nacos+sentinel+gateway
- 问题汇总
- iptables No chain/target/match by that name
- docker-compose.yml修改mysql密码,重启后不生效
安装
前提:!注意先安装docker
在线安装
# 下载某版本docker-compose文件并改名docker-compose移动至/usr/local/bin
curl -L "https://github.com/docker/compose/releases/download/1.28.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 授权docker-compose可执行
chmod +x /usr/local/bin/docker-compose
# 查看是否安装成功
docker-compose -v
离线安装
需要先下载好docker-compose文件
# 授执行权限
chmod +x docker-compose
# 移动至/usr/bin
cp docker-compose /usr/bin
# 查看是否安装成功
docker-compose -V
配置
mysql5.7
- !!!注意需要给/docker_mysql/data目录授读写权限, 例如
chmod 777 data version为2和3时都可以
version: '3'
services:mysql57:image: mysql:5.7container_name: mysql5.7restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: "123456"TZ: Asia/ShanghaiMYSQL_USER: testMYSQL_PASSWORD: Test@123456# 指定启动命令和配置参数# command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"ports:- 3307:3306volumes:- ./docker_mysql/log:/var/log/mysql- ./docker_mysql/data:/var/lib/mysql- ./docker_mysql/conf:/etc/mysql/conf.d
bitnami/mysql8.3
有一次离线部署,docker官方mysql镜像
docker load无法成功,改为bitnami版才成功
- !!!注意需要给/docker_mysql/data目录授读写权限, 例如
chmod 777 data - bitnami版配置
version必须为2时以下配置才会生效 version为3时容器虽然运行成功,但密码等配置都无法生效- 官网文档
version: '2'
services:mysql:image: bitnami/mysql:8.3container_name: mysql8restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_USER=prism- MYSQL_PASSWORD=123456- MYSQL_DATABASE=mydatabaseports:- 3307:3306volumes:- ./docker_mysql/data:/bitnami/mysql/data
redis
- /docker_redis目录下放入配置文件
redis.conf#开启远程可连接 #bind 127.0.0.1 #自定义密码 requirepass 123456 #指定 Redis 监听端口(默认:6379) port 6379 #客户端闲置指定时长后关闭连接(单位:秒。0:关闭该功能) timeout 0 #是否压缩数据存储(默认:yes。Redis采用LZ 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大) rdbcompression yes #指定本地数据文件名(默认:dump.rdb) dbfilename dump.rdb #指定本地数据文件存放目录 dir /data #指定日志文件位置(如果是相对路径,redis会将日志存放到指定的dir目录下) logfile "redis.log" - 启动后,可进入容器通过
redis-cli测试,例如auth 密码测试自定义密码是否生效 - !!!注意,如果是先启动的话会自动生成映射目录,其中redis.conf文件会被映射成为目录而不是文件,需要修改后重启
redis:image: redis:6.2.6container_name: redisrestart: alwaysvolumes:- ./docker_redis/redis.conf:/etc/redis/redis.conf- ./docker_redis/data:/data- ./docker_redis/logs:/logscommand: redis-server /etc/redis/redis.confports:- "6380:6379"
web前后台分离部署
后端镜像
web-server基于openjdk:8-alpine镜像制成,前端镜像web-front基于nginx镜像制成
version为2时需要增加links配置才能将后端服务web-server传入前端服务web-front内部的nginx配置用于反向代理,为3时不需要links配置即可实现- 若后端程序连接的
mysql也是通过该docker-compose部署的,则可在配置里不使用ip端口而是直接使用服务名 - 也可以不在同一个docker-compose.yml配置,但要确保在同一网络,例如yml文件放在同一个目录下
version: '3'
services:web-server:image: 127.0.0.1:5000/web-servercontainer_name: web-serverrestart: alwaysenvironment:- spring.datasource.url=jdbc:mysql://【mysql服务名】/api?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=CTT# - spring.datasource.url=jdbc:mysql://【ip】:【port】/api?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=CTT- JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=trueweb-front:image: 127.0.0.1:5000/web-frontcontainer_name: web-frontrestart: always# links:# - web-serverdepends_on:- web-serverports:- "8080:80"
前端https(SSL)配置
主要涉及签名证书通过volumes映射,具体配置可见【docker-compose】【nginx】内网环境https配置
nginx动态传参
主要借助docker-compose的environment、Dockerfile的envsubst以及nginx配置文件模版实现,【docker-compose】【nginx】动态配置
资源限制:内存、cpu
- 使用
deploy进行资源限制时version必须为3 cpus配置必须使用引号‘’- 需通过
docker-compose --compatibility up -d启动才能生效 - 可通过
docker stats --no-stream查看内存及cpu使用情况
version: '3'
services:web-server:image: 127.0.0.1:5000/web-servercontainer_name: web-serverrestart: alwaysdeploy:resources:limits:memory: 256Mcpus: '1'web-front:image: 127.0.0.1:5000/web-frontcontainer_name: web-frontrestart: alwaysdepends_on:- web-serverports:- "8080:80"deploy:resources:limits:memory: 64Mcpus: '0.5'
nacos+sentinel+gateway
- docker-compose可以通过服务名访问服务,避免了每次修改ip和端口,便于移植
version: '3'
networks: #自定义网络myapp,为了只有这些服务可以在该网络内相互访问myapp:driver: bridge
services: #将容器抽象成服务nacos: #注册中心(官方镜像)image: nacos/nacos-server:latestcontainer_name: nacosrestart: alwaysenvironment:MODE: standalonePREFER_HOST_MODE: ipSPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: 【ip地址】#数据库在外部MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacos_configMYSQL_SERVICE_USER: nacosMYSQL_SERVICE_PASSWORD: Nacos@123456# MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8volumes:- ./docker_nacos/standalone-logs/:/home/nacos/logsports:- "8848:8848"networks:- myappsentinel: #熔断限流(官方镜像)image: bladex/sentinel-dashboardcontainer_name: sentinel-nacosrestart: alwaysdepends_on:- nacosenvironment:NACOS_SERVER_ADDR: nacos:8848NACOS_USERNAME: nacosNACOS_PASSWORD: nacosNACOS_NAMESPACE: publicNACOS_GROUP_ID: SENTINEL_GROUPports:- "8858:8858"networks:- myappgateway: #网关(自制镜像)image: nacos-gatewaycontainer_name: nacos-gatewayrestart: alwaysdepends_on:- nacosports:- "18890:18890"environment:- spring.cloud.nacos.discovery.server-addr=nacos:8848- spring.cloud.sentinel.transport.dashboard=sentinel:8858networks:- myappauthserver: #认证中心(自制镜像)image: nacos-authservercontainer_name: nacos-authserverrestart: alwaysdepends_on:- nacosenvironment:- spring.datasource.url=jdbc:mysql://【mysql服务名】/oauth?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=CTT- spring.cloud.nacos.discovery.server-addr=nacos:8848- spring.cloud.sentinel.transport.dashboard=sentinel:8858- JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=truenetworks:- myapp
问题汇总
iptables No chain/target/match by that name
原因:centos7默认防火墙为firewalld,而不是iptables,而docker使用iptables来做端口映射,所以一旦将firewalld关闭,则会报错
解决:启动防火墙,并一定注意开放平台访问的端口
systemctl start firewalld.service
firewall-cmd --zone=public --add-port=[port]/tcp --permanent
firewall-cmd --reload
docker-compose.yml修改mysql密码,重启后不生效
描述:修改后的密码无法连接mysql,但旧密码依然可以
问题:因为带有旧有登录信息的卷依然在
解决:docker volume ls 找到旧卷,docker volume rm删除旧卷
注意:!!!千万不要移除mysql容器重启,虽然密码生效了,但是删库,所有数据都没了
相关文章:
【docker-compose】安装及配置
目录 安装在线安装离线安装 配置mysql5.7bitnami/mysql8.3redisweb前后台分离部署前端https(SSL)配置nginx动态传参资源限制:内存、cpunacossentinelgateway 问题汇总iptables No chain/target/match by that namedocker-compose.yml修改mysql密码,重启后…...
【第十五届】蓝桥杯省赛C++b组
今年的蓝桥杯省赛已经结束了,与以往不同,今年又回到了8道题,而22,23年出现了10道题 大家觉得难度怎么样,欢迎进来讨论,博主今年没参加哈,大家聊聊,我听听大家的意见和看法哈 试题A:…...
thinkphp6 Driver [Think] not supported.
问题的原因:使用view这个类但相应的库未安装(新版仅内置了PHP原生模板引擎) 官方解释:视图功能由\think\View类配合视图驱动(也即模板引擎驱动)类一起完成,新版仅内置了PHP原生模板引擎&#x…...
爱自然生命力专项基金:“爱·启航”残障家庭教育援助项目帮扶上万残障家庭
为进一步积极践行社会责任,助力公益慈善事业,2017年2月爱自然生命力体系与中国下一代教育基金会开展相关合作,共同启动了中国下一代教育基金会爱自然生命力专项基金,并启动了基金第一个项目“爱启航残障家庭教育援助项目”&#x…...
【ubuntu】如何追加path
【背景】 在ubuntu上整备一个项目环境时需要追加Path。 【方法】 先复制下需要加的Path,比如我的是:/home/sheep431/.local/bin 加path命令 nano ~/.bashrc在nano界面输入如下命令 export PATH"/home/sheep431/.local/bin:$PATH"【检验】…...
用html写一个有趣的鬼魂动画
<!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>一个有趣的鬼魂动画</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.m…...
【C++软件调试技术】C++软件开发维护过程中典型调试问题的解答与总结
目录 1、引发C软件异常的常见原因有哪些? 2、排查C软件异常的常用方法有哪些? 3、为什么要熟悉常见的异常内存地址? 4、调试时遇到调用IsBadReadPtr或者IsBadWritePtr引发的异常,该如何处理? 5、如何排查GDI对象泄…...
Pygame经典游戏:贪吃蛇
------------★Pygame系列教程★------------ Pygame经典游戏:贪吃蛇 Pygame教程01:初识pygame游戏模块 Pygame教程02:图片的加载缩放旋转显示操作 Pygame教程03:文本显示字体加载transform方法 Pygame教程04:dra…...
推荐一个免费使用Claude 3, GPT4和Gemini 1.5 Pro的网站
在探索人工智能的广阔天地时,我偶然间发现了You AI这一平台,它不仅更新了大量的模型,还慷慨地提供了免费的使用机会。兴奋之余,我迅速开始尝试这些新功能,并决定将我的体验分享给大家。以下是我试用的流程: 打开网站:点击左下角的Sign in蓝色框 https://you.comhttps://…...
An Investigation of Geographic Mapping Techniques for Internet Hosts(2001年)第二部分
下载地址:An investigation of geographic mapping techniques for internet hosts | Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications 被引次数:766 Padmanabhan V N, Subramanian L. An i…...
解锁生成式 AI 的力量:a16z 提供的 16 个企业指南
企业构建和采购生成式AI方面的16项改变 生成式 AI 领域趋势洞察:企业构建和采购生成式 AI 的方式正在发生重大转变,具体表现在:* 专注于可信度和安全性:75% 的企业将信任和安全性视为关键因素。* 优先考虑可扩展性和灵活性&#x…...
Kylin使用心得
Kylin是一个开源的分布式分析引擎,基于Apache Hadoop构建,专为处理大规模数据集而设计。以下是一些使用Kylin的心得体会: 快速查询 Kylin的OLAP引擎能够对大规模数据集进行高效的多维分析查询。通过预计算和存储多维度的聚合数据࿰…...
CentOS7使用Docker搭建Joplin Server并实现多端同步与公网使用本地笔记
文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能,…...
C语言100道练习题打卡(1)
1 有1,2,3,4四个数字,能组成多少个互不相同且不重复的三位数,都是多少 #include<stdio.h> //有1,2,3,4四个数字,能组成多少个互不相同且不重复的三位数ÿ…...
5G-A有何能耐?5G-A三载波聚合技术介绍
2024年被称作5G-A元年。5G-A作为5G下一阶段的演进技术,到底有何能耐呢? 三载波聚合(3CC)被认为是首个大规模商用的5G-A技术,将带来手机网速的大幅提升。 █ 什么是3CC 3CC,全称叫3 Component Carriers…...
理解Go语言中上下文
开发人员有时会误解context.Context类型,尽管它是Go语言的关键概念之一,也是Go中并发代码的基础之一。接下来让我们看看这个概念,并确保我们理解为什么乃如何有效地使用它。 根据官方文档: 上下文(context)携带最后期限、取消信号和其他跨API边界的值。 下面让我们来看下这…...
[MySQL]数据库原理8——喵喵期末不挂科
希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…...
【算法基础】插入排序与二分查找、升级二分查找
文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌,不断…...
在Vue3中如何使用H.265视频流媒体播放器EasyPlayer.js?
H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…...
基于51单片机的PM2.5监测系统设计—环境监测仪
基于51单片机的PM2.5监测系统 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 1.PM2.5传感器模块检测信息给单片机处理; 2.LCD1602实时显示PM2.5浓度和PM2.5报警阈值&#x…...
使用pycharm调试后端项目
本文主要解决终端工具与charm环境隔离问题,让终端虚拟环境与pycharm进行关联,简化pycharm的操作第一步 安装 UV 并创建虚拟环境(uv工具安装步骤已经跳过,不知道怎么安装的找AI问)确保系统中已安装 UV 工具。若需特定 P…...
从游戏报错到完美运行 DirectX修复工具实际应用案例展示
评价一款工具软件的优劣,最具有说服力的方式莫过于通过真实的实际案例来直观展示其效果和价值。 对于系统修复类工具来说,更是如此,因为用户最关心的就是它能否真正解决自己的问题。 DirectX相关问题一直是Windows游戏玩家最常遇到的技术难题…...
基于ATP的10kV并联电容暂态过程仿真
基于ATP的10kV并联电容暂态过程仿真在电力系统中,10kV并联电容装置起着至关重要的作用,比如提高功率因数、改善电压质量等。然而,其暂态过程却较为复杂,需要深入研究。ATP(Alternative Transients Program)…...
LeaguePrank终极指南:安全打造个性化英雄联盟游戏体验
LeaguePrank终极指南:安全打造个性化英雄联盟游戏体验 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款基于英雄联盟LCU API开发的个性化定制工具,让玩家能够在不违反游戏规则的前提下…...
避坑指南:在RV1103B上为SC132GS摄像头添加设备树节点的正确姿势
RV1103B平台SC132GS摄像头设备树配置实战指南 1. 瑞芯微RV1103B平台摄像头开发概述 在嵌入式视觉系统开发中,瑞芯微RV1103B凭借其出色的图像处理能力和低功耗特性,成为工业视觉、智能门铃等场景的热门选择。SC132GS作为一款高性价比的1/3英寸CMOS传感器&…...
英雄联盟智能工具集:3个颠覆性功能重塑你的游戏体验
英雄联盟智能工具集:3个颠覆性功能重塑你的游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 作为英雄联盟玩家…...
除了Cesium和Mapbox,用three-tile+Three.js打造轻量级WebGIS的完整实践
用three-tileThree.js构建轻量级WebGIS的工程实践指南 在Web三维地图开发领域,Cesium和Mapbox长期占据主导地位,但它们"全家桶"式的架构往往成为灵活定制的桎梏。当项目需要精细控制渲染管线、深度集成业务逻辑或追求极致性能时,开…...
如何让经典游戏完美运行在现代Windows系统:DDrawCompat高效解决方案全指南
如何让经典游戏完美运行在现代Windows系统:DDrawCompat高效解决方案全指南 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/g…...
深入理解栈溢出:我是如何通过CSAPP的AttackLab实验重新认识缓冲区安全的
深入理解栈溢出:从AttackLab实验看现代系统安全防御博弈 当我在深夜的实验室里第一次看到Segmentation fault提示时,并没有意识到这行简单的错误信息背后隐藏着怎样的安全危机。作为计算机系统安全领域最经典的漏洞类型,栈溢出攻击在过去三十…...
给视觉新手的保姆级教程:用Python+OpenCV玩转四步相移结构光(附代码)
零基础实战:用PythonOpenCV实现四步相移结构光三维重建 在计算机视觉领域,结构光三维重建技术因其高精度和非接触特性,被广泛应用于工业检测、逆向工程和医疗成像。对于刚接触这一领域的新手来说,最困扰的往往不是理解原理&#x…...
