当前位置: 首页 > news >正文

使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

目录

  • docker-compose
    • 语法(更多说明可查看下面代码)
      • image
      • hostname
      • container_name
      • volumes
      • networks
    • yml文件的使用
      • 启动
      • 停止
  • 开发环境(这里以python为例)
  • 部署环境
    • nginx
    • mysql
    • tomcat
    • jar包
    • 打包后的可执行程序
  • 常见问题与解决方案
    • 多个容器写在同一个compose中
    • 容器与容器之间通信

docker-compose

语法(更多说明可查看下面代码)

image

镜像名称,可去镜像市场查找自己需要的

hostname

容器内服务名

container_name

容器名

volumes

可以把自己电脑的路径映射到容器中的文件夹中

networks

写同一个网络可以让容器之间进行通信

yml文件的使用

启动

在项目根目录的命令行中输入docker-compose up

停止

在项目根目录的命令行中输入docker-compose down

开发环境(这里以python为例)

  • 在项目根目录创建一个docker-compose.yml文件;
  • 因为我这里主要用于在win下使用pyinstaller打包linux使用的二进制可执行程序,所以command配置的是先安装依赖包,再执行打包程序,此写法可以执行多行bash指令
  • 最后就是根据自己需要进行修改。
version: '3.1' # 如果报错可以切换版本试下
services:api:image: python:3.11.4 # 冒号后面跟版本hostname: apicontainer_name: apivolumes:- ./:/api # 把当前yml的路径,也就是项目根目录映射到容器中的api文件夹中working_dir: /api/ # 相当于设置容器内项目根目录environment:- TZ=Asia/Shanghaicommand: >bash -c 'pip3 install -i https://mirrors.aliyun.com/pypi/simple/ -r /api/requirements.txt &&pyinstaller /api/WebService.py -F --icon /api/static/favicon.ico --collect-all flasgger --add-data "/api/static:static" --add-data "/api/templates:templates" --add-data "/api/lib:lib"'network_mode: bridge # 无需跨容器可默认网桥模式

部署环境

nginx

  • 按照官方的说法,自己可以通过配置后缀名为.template的conf文件,来让容器内的nginx加载;
  • 这里我提前在/usr/nginx中创建了一个my.conf.template文件,内部可以按自己的项目来配置server{listen: 83; location / {}}
  • 我把打包好的前端项目放到了/usr/nginx/www中了。
version: '3.1'
services:web:image: nginxhostname: webcontainer_name: webvolumes:- /usr/nginx:/etc/nginx/templates- /usr/nginx/www:/wwwnetworks:- gd-netports:- 83:83

mysql

  • mysql文件夹映射出来的目的是为了保存数据,否则每次down的时候会把数据库清空;
  • 可以按照自己的需求来修改mysql的版本密码
version: '3.1'
services:db:image: mysql:5.7hostname: dbcontainer_name: dbvolumes:- /usr/mysql/mysql:/var/lib/mysql- /usr/mysql/conf.d:/etc/mysql/conf.dcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: 123456ports:- 3306:3306networks:- gd-net

tomcat

  • 这个镜像使用的是jre8,如果需要openjdk或其它版本之类的环境可以去镜像市场搜索;
  • 这里映射的是webapps文件夹,up后里面的war包会自动展开。
version: '3.1'
services:tom:image: tomcat:8.5.91-jre8-temurin-jammyhostname: tomcontainer_name: tomrestart: alwaysports:- 8080:8080environment:- TZ=Asia/Shanghaivolumes:- /usr/war:/usr/local/tomcat/webappsnetworks:- gd-net

jar包

  • 因为使用volumes映射的路径放进去的文件不一定有执行权限,所以在command中加入了chmod指令。
version: '3.1'
services:jar:image: openjdk:8hostname: jarcontainer_name: jarrestart: alwaysvolumes:- /usr/jar:/jarports:- 8888:8888command: bash -c "chmod +x /jar/gdla* && java -jar /jar/gdla*"networks:- gd-net

打包后的可执行程序

  • 这里我执行的是pyinstaller打包好的linux二进制可执行程序,在linux系统图形界面下是可以双击运行的;
  • 因为使用volumes映射的路径放进去的文件不一定有执行权限,所以在command中加入了chmod指令;
  • command中的*表示通配符的意思,意思为以API开头的文件。
version: '3.1'
services:api:image: python:3.11.4hostname: apicontainer_name: apivolumes:- /usr/api:/apiworking_dir: /apiports:- 8999:8999- 2013:2013environment:- TZ=Asia/Shanghaicommand: bash -c "chmod +x /api/API* && /api/API*"networks:- gd-netrestart: unless-stopped  # 自动启动:unless-stopped、always等,unless-stopped为非正常停止则自动启动

常见问题与解决方案

多个容器写在同一个compose中

version: '3.1'
services:db:image: mysql:5.7networks:- gd-netjar:image: openjdk:8networks:- gd-net
networks:gd-net:

容器与容器之间通信

  • 例如一个容器的tomcat想要访问另一个容器的mysql服务
  • 首先两个容器使用同一个networks
  • db.properties配置的连接名就不是ip了,可以写成上面设置的服务名,也就是db
  • 当然,如果你的项目不在容器中,而在宿主电脑,这时是可以通过ip访问数据库的。

相关文章:

使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

目录 docker-compose语法(更多说明可查看下面代码)imagehostnamecontainer_namevolumesnetworks yml文件的使用启动停止 开发环境(这里以python为例)部署环境nginxmysqltomcatjar包打包后的可执行程序 常见问题与解决方案多个容器…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——支持加强——第三节——分类3——类比题干支持

文章目录 第三节 支持加强-分类3-类比题干支持真题(2017-28)-支持加强-正面支持-表达“确实如此”真题(2017-36)-支持加强-正面支持-表达“确实如此”真题(2017-39)-支持加强-正面支持-方法有效或方法可行,但多半不选择方法无恶果真题(2017-50)-支持加强真题(2018-2…...

搜索旋转排序数组

整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nums[1], …, …...

Steam搬砖项目:最长久稳定的副业!

项目应该大家都有听说话&#xff0c;但是细节问题&#xff0c;如何操作可能有些不是很清楚&#xff0c;今天在这里简单分享一下。 这个Steam搬砖项目主要赚钱汇率差和价值差&#xff0c;是一个细分领取的小项目。 不用引流&#xff0c;时间也是比较自由的&#xff0c;你可以兼…...

最小化安装移动云大云操作系统--BCLinux-R8-U8-Server-x86_64-230802版

CentOS 结束技术支持&#xff0c;转为RHEL的前置stream版本后&#xff0c;国内开源Linux服务器OS生态转向了开源龙蜥和开源欧拉两大开源社区&#xff0c;对应衍生出了一系列商用Linux服务器系统。BC-Linux V8.8是中国移动基于龙蜥社区Anolis OS 8.8版本深度定制的企业级X86服务…...

神经网络基础-神经网络补充概念-05-导数

概念 导数是微积分中的一个概念&#xff0c;用于描述函数在某一点的变化率。在数学中&#xff0c;函数的导数表示函数值随着自变量的微小变化而产生的变化量&#xff0c;即斜率或变化率。 假设有一个函数 f(x)&#xff0c;其中 x 是自变量&#xff0c;y f(x) 是因变量。函数…...

kubernetes — 安装Ingress

1、 Ingress 1、安装-Nginx-Ingress kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml 2、设为默认的Ingress [rootk8s01 ~]# vim default_ingress.yaml apiVersion: networking.…...

SSR使用HTTPS

1.安装 npm i browser-sync 2. 再angular.json里配置 "serve-ssr": {"builder": "nguniversal/builders:ssr-dev-server","options": {"ssl": true,"sslCert": "./node_modules/browser-sync/certs/server…...

Spring Boot中使用validator如何实现接口入参自动检验

文章目录 一、背景二、使用三、举例 一、背景 在项目开发过程中&#xff0c;经常会对一些字段进行校验&#xff0c;比如字段的非空校验、字段的长度校验等&#xff0c;如果在每个需要的地方写一堆if else 会让你的代码变的冗余笨重且相对不好维护&#xff0c;如何更加规范和优…...

thinkphp 5 实现UNION ALL 3个联表查询,并且带上搜索条件,名称,时间,手机号

在ThinkPHP 5中实现带有搜索条件、名称、时间和手机号的3个联表查询&#xff08;UNION ALL&#xff09;&#xff0c;您可以按照以下步骤进行操作&#xff1a; 确保已经配置好数据库连接信息和相关的模型。 使用union()方法来构建3个联表查询&#xff0c;同时在每个查询中添加所…...

React 之 Router - 路由详解

一、Router的基本使用 1. 安装react-router react-router会包含一些react-native的内容&#xff0c;web开发并不需要 npm install react-router-dom 2. 设置使用模式 BrowserRouter或HashRouter Router中包含了对路径改变的监听&#xff0c;并且会将相应的路径传递给子组件Bro…...

框架分析(1)-IT人必须会

框架分析&#xff08;1&#xff09;-IT人必须会 专栏介绍当今主流框架前端框架后端框架移动应用框架数据库框架测试框架 Angular关键特点和功能&#xff1a;组件化架构双向数据绑定依赖注入路由功能强大的模板语法测试友好 优缺点分析优点缺点 总结 专栏介绍 link 主要对目前市…...

前端面试的游览器部分(7)每天10个小知识点

目录 系列文章目录前端面试的游览器部分&#xff08;1&#xff09;每天10个小知识点前端面试的游览器部分&#xff08;2&#xff09;每天10个小知识点前端面试的游览器部分&#xff08;3&#xff09;每天10个小知识点前端面试的游览器部分&#xff08;4&#xff09;每天10个小知…...

认识Junit

1. 前言 2. Junit注解 2.1. 常用的注解 2.1.1. Test 表示当前方法是一个测试方法(不需要main来执行) Test void Test01() throws InterruptedException {System.out.println("测试用例1");WebDriver webDriver new ChromeDriver();webDriver.get("https:/…...

Unity C# 引用池 ReferencePool

Unity C# 引用池 ReferencePool 1.目的 对于多次创建的数据使用new 关键字是十分消耗性能的&#xff0c;使用完成后由GC去自动释放&#xff0c;当一个类型的数据频繁创建可以使用引用池进行管理。 2.实现 项目目录 IReference 接口 要放入引用池的数据只需要继承这个接口…...

opencv 进阶10-人脸识别原理说明及示例-cv2.CascadeClassifier.detectMultiScale()

人脸识别是指程序对输入的人脸图像进行判断&#xff0c;并识别出其对应的人的过程。人脸识别程 序像我们人类一样&#xff0c;“看到”一张人脸后就能够分辨出这个人是家人、朋友还是明星。 当然&#xff0c;要实现人脸识别&#xff0c;首先要判断当前图像内是否出现了人脸&…...

〔013〕Stable Diffusion 之 图片自动评分和不健康内容过滤器 篇

✨ 目录 🎈 下载咖啡美学评价插件🎈 咖啡美学评价使用🎈 不健康内容过滤器插件🎈 下载咖啡美学评价插件 想让系统帮你的图片作品打分评价,可以下载咖啡美学自动评价插件插件地址:https://github.com/p1atdev/stable-diffusion-webui-cafe-aesthetic也可以通过扩展列表…...

6.RocketMQ之消费索引文件ConsumeQueue

功能&#xff1a;作为CommitLog文件的索引文件。 本文着重分析为consumequeue/topic/queueId目录下的索引文件。 1.ConsumeQueueStore public class ConsumeQueueStore {protected final ConcurrentMap<String>, ConcurrentMap<Integer>, ConsumeQueueInterface…...

Appium-移动端自动测试框架,如何入门?

Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门&#xff0c;那么我们就直奔主题。文章结构如下&#xff1a; 1、为什么要使用Appium&#xff1f; 2、如何搭建Appium工具环境?(超详细&#xff09; 3、通过demo演示Appium的使用 4、Appium如何…...

复数混频器、零中频架构和高级算法开发

文章里讲解了关于射频IQ调制器、零中频架构相关的原理及技术&#xff0c;全都是干货&#xff01;其实好多同行对软件无线电的原理、IQ调制、镜像抑制都是一知半解&#xff0c;知其然不知其所以然。好好研读这篇文章&#xff0c;相信会让你有种恍然大悟的感觉。 RF工程常被视为…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...