Docker-Compose一键部署项目
Docker-Compose一键部署项目
目录
- Docker-Compose一键部署项目
- 介绍
- 部署Django项目
- 项目目录结构
- docker-compose.yml
- nginx的default.conf文件
- 后端Dockerfile文件
- mysql.env
- 一键部署
- DNS域名解析引起的跨域问题
介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过使用 YAML 文件来配置应用程序的服务,从而简化了容器的管理和部署
部署Django项目
项目目录结构
-Terminal_API # 项目根目录
-dist # 前端Vue整合
-docker_compose_files # 容器的配置文件
-mysql
-nginx
-default.conf # nginx的默认配置文件
-terminal # 项目
-Dockerfile # 后端Dockerfile文件
-.gitignore # git的忽略文件
-docker-compose.yml # docker-compose的配置文件
-mysql.env # mysql的配置文件
docker-compose.yml
version: "3"services:nginx:image: nginx # 指定容器container_name: terminal_nginx # 为将要生成的容器取名ports:# 绑定端口,左边宿主机右边容器- "8080:8080"- "8000:8000"restart: always # 容器的重启策略,确保容器在停止或崩溃时总是重启volumes:# 挂载,类似-v- ./dist:/var/www/html- ./docker_compose_files/nginx:/etc/nginx/conf.ddepends_on:- djangonetworks:- webdjango:build:context: ./terminal # 指定Dockerfile所在目录dockerfile: Dockerfilecontainer_name: terminal_django
# command: python manage_pro.py makemigrations && python manage_pro.py migrate && uwsgi ./luffy.inirestart: alwaysports:- "8001:8001"volumes:- ./terminal:/appenvironment:- TZ=Asia/Shanghaidepends_on:- mysqlnetworks:- webmysql:image: mysql:latestcontainer_name: terminal_mysqlrestart: alwaysports:- "3308:3306"env_file:- ./mysql.envvolumes:- ./docker_compose_files/mysql/data:/var/lib/mysql- ./docker_compose_files/mysql/logs:/var/log/mysql- ./docker_compose_files/mysql/conf:/etc/mysql/conf.dnetworks:- webnetworks:web:
nginx的default.conf文件
server {listen 8080;server_name 127.0.0.1;charset utf-8;location / {root /var/www/html;index index.html;try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题}
}server {listen 8000;server_name 127.0.0.1;add_header 'Access-Control-Allow-Origin' '*';location / {if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Max-Age' 1728000;return 204;}proxy_pass http://terminal_django:8001;# 其他proxy_set_header指令...}
}
后端Dockerfile文件
# 使用官方Python镜像作为基础镜像
FROM python:3.10# 设置工作目录
WORKDIR /app## 将当前目录下的代码复制到容器的/app目录下
COPY .. /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 暴露端口
EXPOSE 8001# 运行Django应用
CMD ["python", "manage.py", "runserver", "0.0.0.0:8001"]
mysql.env
MYSQL_ROOT_PASSWORD=7997
MYSQL_DATABASE=terminal
TZ=Asia/Shanghai
一般来说部署的数据库HOST
要换成容器名,也可以是服务名
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'terminal','HOST': 'mysql','PORT': '3306','USER': 'root','PASSWORD': '7997',}
}
一键部署
必须在docker-compose.yml所在目录下运行docker-compose up
指令
如果上线的是服务器,需要去把安全组打开
DNS域名解析引起的跨域问题
域名解析本身不会引起跨域问题,但是如果前端axios访问的地址写成你网站的域名,那么就可能会引起跨域问题,这取决于网站后端的策略,如果要访问不同的容器端口,那么前端axios最好全部换成服务器IP
// 推荐
const BASE_URL = 'http://111.231.28.207:8001/'// 不推荐
const BASE_URL = 'http://www.abv.com:8001/'
址写成你网站的域名,那么就可能会引起跨域问题,这取决于网站后端的策略,如果要访问不同的容器端口,那么前端axios最好全部换成服务器IP```js
// 推荐
const BASE_URL = 'http://111.231.28.207:8001/'// 不推荐
const BASE_URL = 'http://www.abv.com:8001/'
相关文章:
Docker-Compose一键部署项目
Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…...
【C++】相机标定源码笔记-线激光点云处理工具类
一个线激光点云处理工具类,它包含了一系列的方法用于处理和分析线激光扫描得到的点云数据。提供的功能包括: 通过文件或直接数据设置点云。计算线激光在机器人坐标系下的精度,输出内点的平均距离、最大距离、最小距离、总点数和内点数。提供了…...
解决Transformer根本缺陷,所有大模型都能获得巨大改进
即使最强大的 LLM 也难以通过 token 索引来关注句子等概念,现在有办法了。 最近两天,马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往,在推特(现为 X)上相互拆对方台。 LeCun 在宣传自家最新论…...
如何排查Java应用的死锁
排查Java应用中的死锁问题是一个复杂但重要的任务,因为死锁会导致应用程序停止响应,影响用户体验和系统稳定性。以下是一些方法和步骤,帮助你排查Java应用中的死锁。 1. 理解死锁的概念 在计算机科学中,死锁是指两个或多个线程相…...
JS面试题1
1. 延迟加载JS有哪些方式? defer: 等html全部解析完成,才会执行js代码,顺次执行js脚本 async:是和html解析同步的,不是顺次执行js脚本(当有很多个js时),是谁先加载完谁先执行。 <…...
Linux网络 - 再谈、详谈UDP和TCP协议
文章目录 前言预备netstatpidofcat /etc/services 一、UDP协议UDP协议端格式UDP的缓冲区基于UDP的应用层协议 二、TCP协议1.TCP协议段格式确认应答(ACK)机制三次握手疑问1 最后一次客户端发给服务端的ACK请求怎么保证服务端能够收到? 四次挥手疑问2 为什么挥手是四次…...
el-form重置后input无法输入问题
新增用户遇到的问题: 如果你没有为 formData 设置默认值,而只是将其初始化为空对象 {},则在打开dialog时,正常输入, formdata会变成如下 但是,打开后,直接使用 resetFields 或直接清空表单&…...
Java网络编程(JavaWeb的基础)
Java网络编程(JavaWeb的基础) 文章目录 Java网络编程(JavaWeb的基础)前言一、网络编程概述1.1 软件架构&网络基础1.2 网络通信要素:IP/端口/通信协议1.3 传输层协议:tcp/udp 二、网络编程API2.1 InetAddress类2.2 Socket类&am…...
鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形
XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上,可以配合Native Window创建OpenGL开发环境,并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板,调用OpenGL ES图形库绘制3D图形&…...
DM达梦数据库存储过程
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
【python】OpenCV—Color Correction
文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础(18)使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…...
Java基础知识整理笔记
目录 1.关于Java概念 1.1 谈谈对Java的理解? 1.2 Java的基础数据类型? 1.3 关于面向对象的设计理解 1.3.1 面向对象的特性有哪些? 1.3.2 重写和重载的区别? 1.3.3 面向对象的设计原则是什么? 1.4 关于变量与方…...
知识图谱——Neo4j数据库实战
数据与代码链接见文末 1.Neo4j数据库安装 JDK 安装:https://www.oracle.com/java/technologies/javase-downloads.html Neo4j 安装:https://neo4j.com/download-center/ 配置好 JDK 和 Neo4j 的环境变量...
第十一次Javaweb作业
4.登录校验 4.1会话 --用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求…...
人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命
随着科技的浪潮不断向前推进,人工智能(AI)正以惊人的速度重塑着我们的世界,特别是在创意产业的核心领域——UI设计与视频剪辑中,AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代,…...
计算机专业课面试常见问题-编程语言篇
目录 1. 程序的编译执行流程? 2. C浅拷贝和深拷贝的区别? 3. C虚函数? …...
CSS|05 继承性与优先级
继承性 一、继承性的特点: 1.外层元素身上的样式会被内层元素所继承 2.如果内层元素与外层元素身上的演示相同时,外层元素的样式会被内层元素所覆盖 二、关于继承性的问题 是不是所有样式都能被继承? 答:并不是所有样式能被继承…...
KVM性能优化之内存优化(宿主机)
linux系统自带了一技术叫透明巨型页(transparent huge page),它允许所有的空余内存被用作缓存以提高性能,而且这个设置是默认开启的,我们不需要手动去操作。 Centos下,我们用cat /sys/kernel/mm/transpare…...
【Linux杂货铺】Linux学习之路:期末总结篇1
第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆;它由林纳斯 本纳第克特 托瓦兹从零开始编写,并在网络上众多松散的黑客团队的帮助下得以发展和完善;它遵从可移植操作系统接口(POSIX)标准和单一 UNIX 规范…...
GPT-5的到来:智能飞跃与未来畅想
IT之家6月22日消息,在美国达特茅斯工程学院的采访中,OpenAI首席技术官米拉穆拉蒂确认了GPT-5的发布计划,预计将在一年半后推出。穆拉蒂形象地将GPT-4到GPT-5的飞跃比作高中生到博士生的成长。这一飞跃将给我们带来哪些变化?GPT-5的…...
gin中间件
在web应用服务中,完整的业务处理在技术上包含客户端操作,服务端处理,返回处理结果给客户端三个步骤。但是在在更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证,权限管理,安全检查,日志记录等多维…...
swagger常用注解
最近查看接口文档的时候发现,POST方法中的query没法在swagger中显示,查了才发现这是因为Swagger或OpenAPI规范默认将HTTP POST请求的参数识别为请求体(body)参数,而不是查询字符串(query)参数。…...
【Flink metric(1)】Flink指标系统的系统性知识:获取metric以及注册自己的metric
文章目录 一. Registering metrics:向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)2.4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System…...
命令模式(Command Pattern)
命令模式(Command Pattern) 定义 命令模式是对命令的封装,每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。 命令模式解耦了请求方和接收方,请求…...
掌握Symfony的模板继承:构建强大且灵活的Web界面
掌握Symfony的模板继承:构建强大且灵活的Web界面 在Symfony框架中,模板继承是一个强大的功能,它允许开发者创建可重用的布局模板,并通过扩展这些模板来构建具体的页面。这种机制不仅提高了代码的可维护性,还使得页面结…...
uboot基本使用网络命令和从服务器端下载linux内核启动
网络命令ip地址设置: setenv gmac_debug 0; setenv mdio_intf rgmii; setenv bootdelay 1; setenv ethaddr 00:xxxx:81:70; // mac地址 setenv ipaddr xxx; //开发板 IP 地址 setenv netmask 255.255.255.0; setenv gatewayip xxx.1; setenv serverip xxxx; //服…...
解决ArcGIS导出的svg格式的图片插入Word后的字体问题
背景 在ArcGIS中设置字体为Times New Roman,但导入Word后字体转为等线。 ArcGIS中的Layout 导入Word 原因分析 Word无法识别嵌入进SVG格式文件中的字体。 解决方案 在Export Layer窗口中,将Embed fonts取消勾选,Convert cha…...
如何确保 Puppet 配置在复杂网络环境中的可靠分发和同步?
在复杂网络环境中确保 Puppet 配置的可靠分发和同步可以采取以下措施: 网络拓扑规划:在复杂网络环境中,首先需要进行网络拓扑规划,确保网络结构合理,并能够支持可靠的分发和同步机制。 Puppet Master 多节点部署&…...
2024最新!将mysql的数据导入到Solr
Solr导入mysql的数据 如何安装导入数据前准备配置Solr的Jar包以及Mysql驱动包1.1、将solr-8.11.3\dist下的两个包进行移动1.2、将mysql-connect包也移动到该位置1.3、重启Solr项目 配置xml2.1、第一步我们需要创建核心2.2、第二步修改xml(这里是结合19年的教程)2.3、 创建data-…...
Python数据分析第二课:conda的基础命令
Python数据分析第二课:conda的基础命令 1.conda是什么? conda是一个开源的包管理系统,可以帮助我们进行管理多个不同版本的软件包,还可以帮助我们建立虚拟环境,以便对不同的项目进行隔离。 简单来说,conda是一个软…...
网站闭站保护/seo关键词排名网络公司
1. 马哈鱼数据血缘分析工具简介 马哈鱼数据血缘分析工具(英文名称为 Gudu SQLFlow )是一款用于分析 SQL 语句,并发现其中数据血缘关系的分析软件,经常和元数据管理工具一起使用,是企业数据治理的基础工具。 如果你对 …...
湖南网站制作/站长之家网站排行榜
方法中返回的对象,一般不会造成内存溢出,但是一下情况就是刚好造成的内容溢出: 如果对象的引用刚好被单例所持有的话,JVM就不会回收该引用。 1、创建对象 Info info new Info(); 复制代码new Info()的时候,会返回一个…...
南昌网站建设渠道/广州市口碑seo推广
有好几种解决方案: https://hexo.io/zh-cn/docs/asset-folders 先试试配置yml的方式; 确实解决了问题...
中企动力做的网站后台如何登陆/推广普通话手抄报内容
Vue-Router 原理实现1.1Vue-Router 使用步骤1.2动态路由1.3嵌套路由1.4编程式导航1.5Hash 和 History 模式区别History 模式History 模式 - Node.jsHistory 模式 - nginx1.6Vue Router 实现原理Vue Router 模拟实现 ( History模式 )Vue Router - ConstructorVue Router - insta…...
永久免费网站建商城/百度广告点击软件
ifconfig中lo、eth0、br0、wlan0接口 ifconfig中loeth0br0wlan0接口 lo 回环接口eth0 以太网接口br0 网桥接口wlan0 无线接口lo 回环接口 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 一般回环接口的ip v4地址为:127.0.0.1,子网掩码…...
常州专业网站建设公司咨询/怎么在百度上推广产品
Linux Read ACPI Table Tools.ACPI tools的安装:#yum install acpica-tools或者到下面链接下载源码:下面示例是解析SSDT1表的步骤。#acpidump -o ACPI_table.out#acpixtract -a ACPI_table.outIntel ACPI Component ArchitectureACPI Binary Table Extra…...