如何用docker发布多个Springboot、Python应用环境(含开发、测试、生产)
文章目录
- 1. springboot应用
- 本地启动
- docker部署
- 2. python 应用
- 本地启动
- dockerfile
- docker 多环境启动
作为一个开发人员,我们至少会接触到两种环境或三种,比如我们需要先在开发环境上开发测试功能,开发完毕后,同步到测试环境,测试环境通过后,再发布到线上环境,也就是正式环境或生产环境,我们怎样去区分多个环境和用好多个环境呢? 一般遵守下面2个原则:
- 不同环境的配置是不相同的,比如测试环境使用的redis服务器是192.168.111.110, 正式环境用的是 192.168.123.110, 此处打个比方,并不是真实的ip。
- 不同环境的代码应该隔离, 比如dev环境的代码放到git的dev分支上,pro环境的代码放到master分支上,这样做的好处是避免环境代码污染。
现在比较流行的两大语言java和python, 下文将解释如何区分java和python多个环境。
1. springboot应用
springboot应用,可以直接通过application.yml文件名的application后缀来区分开发、测试和生产的配置。
在resource 文件夹下添加 application-dev.yml , application-uat.yml,application-prod.yml等,每个配置对应一个环境。
本地启动
在Active Profiles里添加后缀即可。
docker部署
通过 -e 参数在run的时候指定profile:
SPRING_PROFILES_ACTIVE=prod
例如:
docker run --name my-shop -d -p 8001:8080 -e SPRING_DATASOURCE_PASSWORD=**** -e SPRING_DATA_ELASTICSEARCH_CLUSTER-NODES=116.62.146.90:9300 -e SPRING_PROFILES_ACTIVE=prod -e SPRING_RABBITMQ_HOST=172.17.0.6 116.62.146.90/my-shop/my-shop:0.0.8-SNAPSHOT
注: 我们可以通过 -e 参数注入 yml配置文件里的任意属性,想当于覆盖配置, -e 后接的参数用 “_” 拼接。
2. python 应用
将主配置settings文件复制出来多份,分别修改成pro,local等,settings.py可作为测试环境的配置,如下:
本地启动
在parameters里添加启动参数:
runserver 8006 --setting=my_site.settings
那么python应用怎么区分线上环境呢?
dockerfile
FROM python:3.7
ADD . /usr/local/myapp/school_education_saas
WORKDIR /usr/local/myapp/school_education_saas
RUN pip install -i https://pypi.douban.com/simple --trust -host=pypi.douban.com -r requirements.txt
ENV PORT=8006 PROFILE=school_edu_prj.settings
EXPOSE $PORT
CMD sh start.sh
在runserver的时候通过变量来设置端口和配置文件, 命令脚本:
python manage.py makemigrations --merge
python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:$PORT --setting=$PROFILE
docker 多环境启动
我们可以借助docker 容器的环境变量,在run的时候将port和settings注入到容器里,这样我们可以在本地把不同环境的配置文件配好,下面解释如何启动不同环境的实例。
例如, dev环境, 我们使用8006端口,配置使用 settings.py文件,prod环境,我们使用8007端口,配置使用prosettings.py文件。
dev 环境启动命令: docker run --name my_site --env PORT=8006 --env PROFILE=school_edu_prj.settings -d -p 8006:8006 my_site
pro 环境启动命令: docker run --name my_site --env PORT=8007 --env PROFILE=school_edu_prj.prosettings -d -p 8007:8007 my_site
如何用docker发布多个Springboot、Python应用环境(含开发、测试、生产)相关推荐
- 如何用Python做Web开发?——Django环境配置
用Python做Web开发,Django框架是个非常好的起点.如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手. 概念 最近有个词儿很流行,叫做"全栈"(full ...
- 大年初七,发paper、学Python...分享一下你的学习计划吧~
今天是大年初七,今天是人日,上天造物顺序一鸡二狗三羊...七人!快快恢复元气,努力工作! 欢迎参与今天的话题讨论:发paper.学Python...分享一下你的学习计划吧~ 欢迎留言,参与今天的话题讨 ...
- docker 中部署一个springBoot项目
docker 中部署一个springBoot项目 (1)介绍 springBoot项目 1.项目结构 2.pom.xml [java] view plaincopy <?xml version= ...
- pythonweb开发-如何用Python做Web开发?——Django环境配置
用Python做Web开发,Django框架是个非常好的起点.如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手. 概念 最近有个词儿很流行,叫做"全栈"(full ...
- 使用ISA2004发布多个Web站点之二
在"使用ISA2004发布多个Web站点之一(http://guoxuemin.blog.51cto.com/379574/155839)"中,我们探讨了使用ISA2004发布内网 ...
- 群晖python套件包_利用群晖Docker安装ubuntu16.04搭建python网站服务器(部署篇)
在帖子<利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)(地址:http://www.cirdown.com:81/thread-185-1-1.html)&g ...
- Docker的基本使用(部署python项目)+两个奇技淫巧,将 Docker 镜像体积减小 99%
两个奇技淫巧,将 Docker 镜像体积减小 99% 使用Docker运行程序 Docker的基本使用(部署python项目) 一.准备项目 我写的是一个爬取某ppt网站的代码,就一个ppt1.py是 ...
- python传文件给堡垒机上远程的另一个机器_如何用hive调度堡垒机上的python脚本...
工作中,如果我们本地要操作的数据量大,那么主机是跑不起来python脚本的,这个时候,就要用到服务器(也叫堡垒机)了.那么如何用HIVE调用堡垒机上的python脚本呢?今天小白就总结一下步骤和一些注 ...
- docker安装以及部署springboot项目
一.docker安装 1.安装 Docker Engine-Community 安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本: ...
最新文章
- python 操作word页眉表格_python批量设置多个Excel文件页眉页脚的脚本
- Spring-使用加密的属性文件02
- 原创 | 我被面试官给虐懵了,竟然是因为我不懂Spring中的@Configuration
- 985博士妈妈辅导女儿作业被气哭:博士父母带娃真是太难了...
- JS DOM操作基础
- MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息...
- rosdep init 和rosdep update的解决方法,亲测有效
- python staticmethod
- eclipse修改java编译的版本
- How to recover deleted data from SQL Server
- efsframe java_EfsFrame(java开发框架)
- 深度学习之语义分割(SegNet)
- Nick Szabo:可信任计算的黎明
- Java处理音频文件wav转mp3/mp3转wav
- 前缀和差分 精讲(一维、二维、附例题!)
- html5建站软件工具有哪些
- 超高速定位文件,电脑必备软件
- 使用springboot写一个记事小账本
- Linux开放1521端口允许网络连接Oracle Listene
- 独家 | 离开百度后,王劲创办的景驰将于2020年6月量产自动驾驶汽车