Docker--部署mongodb+.netcore+nginx
前言
公司租用的阿里云的服务器,每年会更换一次,很麻烦,还容易出问题,想会不会有更方便的方式来迁移服务器,就这样接触到了docker。
参考网上的一些资料,自己琢磨了一段时间,记录下docker的部署过程。
系统:CentOS Linux release 7.6.1810
安装docker
1、执行安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
2、启动docker进程
sudo systemctl start docker
至此已安装完成,docker默认镜像地址比较慢,可修改镜像地址。修改该文件,没有可新建一个,/etc/docker/daemon.json 。使用了网易的镜像。
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
安装Mongodb
1、拉取官方镜像
命令可以从 https://hub.docker.com 上获取
docker pull mongo
2、创建并运行容器
docker run -d -p : -v /root/docker/mongo/db:/data/db --name test_mongo mongo --auth
参数说明
-d 后台运行
-p 端口映射 容器内部27017端口映射到外部27017端口(冒号前为外部端口)
-v 目录挂载,这里是把mongo的数据文件挂载到宿主机的目录里,这样容器被删除,也不会丢失数据
--name 容器名称,不加docker会自动命名
--auth 启用mongo权限验证
3、初始化mongodb
docker exec -it em_mongo mongo bash
进入mongodb容器内部执行bash命令,后续操作与mongodb本身的操作无二,可以创建帐号、数据库等,不做详细介绍
exit
exit命令可退出容器
4、mongodb备份还原
如果是已经安装过mongodb,想要迁移到容器内部,则可进行以下操作
首先在原数据库执行备份命令mongodump
在容器中创建目录以保存备份文件
docker exec -it em_mongo /bin/sh
mkdir -p /opt/mongo_bak/
exit
复制备份文件到容器中
docker cp /root/mongo/config/bak em_mongo:/opt/mongo_bak/
还原数据库
docker exec -it em_mongo bash
mongorestore --dir /opt/mongo_bak/bak/ -u root -p
exit
部署.netcore程序
1、拉取镜像
docker pull microsoft/aspnetcore:2.0
项目是用.netcore 2.0开发的,所以指定下版本
2、创建dockerfile文件
这里我们用dockerfile 来根据官方镜像生成自己项目的镜像,文件名 Dockerfile
FROM docker.io/microsoft/aspnetcore:2.0
WORKDIR /app
EXPOSE 80 COPY . . ENTRYPOINT ["dotnet", "ErpMiddle.Pc.dll"]
在VS中可以直接生成该文件

3、生成镜像
将Dockerfile文件和发布后的项目文件放在一块,复制到服务器上,进入相应目录,执行build 命令
docker build -t testimage:1.0 .
-t 后可跟镜像名和版本号,最后的点 表示使用当前路径的Dockerfile
操作完成后执行 docker images 命令即可看到刚刚创建的镜像

4、运行容器
同mongodb 使用run命令运行容器 将容器的80端口映射出来即可
docker run -d -p 5000:80 --name testcontainer --link test_mongo:mongolink testimage:1.0
这里使用了 --link 参数 ,将之前创建的mongo数据库和项目连接起来,这样就可以使用别名mongolink来代替访问地址了,数据库的连接字符串就可以这样写
mongodb://test:123456@mongolink/admin
访问5000端口 即可看到运行结果
部署nginx
1、拉取镜像
docker pull nginx
2、创建并运行容器
docker run --name test_nginx -p : -d -v /root/docker/nginx/proxy.conf:/etc/nginx/conf.d nginx
挂载配置文件目录
增加一个配置文件default.conf
server {
listen 80;
location / {
proxy_pass http://内网Ip:5000;
proxy_set_header Host $host;
}
}
这里需要注意,ip不可用127.0.0.1,不同容器处于不同的网络中
当然这里我们也可以添加link 来使用别名,这样就避免了换机器部署修改配置文件的麻烦
docker run --name test_nginx --link testcontainer:weblink -p 80:80 -d -v /root/docker/nginx/proxy.conf:/etc/nginx/conf.d nginx
配置文件就可以修改成这样,注意端口不需要加
server {
listen 80;
location / {
proxy_pass http://weblink;
proxy_set_header Host $host;
}
}
总结
docker官方镜像是非常丰富的,不需要考虑环境配置问题,可以很方便的进行部署。将数据目录全部挂载到宿主机,这样迁移的时候直接移动过去,可以省去不少麻烦。
Docker--部署mongodb+.netcore+nginx的更多相关文章
- (八) Docker 部署 mongodb
参考并感谢 官方文档 https://hub.docker.com/_/mongo 下载mongo镜像(不带tag标签则表示下载latest版本) docker pull mongo 启动 mongo ...
- docker 部署 mongodb 并且开启远程连接
mongodb 使用 docker 部署 mongodb 拉取镜像 docker pull mongo 可以查看镜像是否下载成功 docker images | grep mongo 应该会有如下的显 ...
- 使用Docker 部署MongoDB
使用 Docker 部署 MongoDB 查看官网安装教程后感觉直接使用包管理器安装mongo比较复杂,本文主要介绍使用docker安装部署mongo的方法,并对基本配置项进行自定义.保姆式全程指导. ...
- Docker部署Django项目+Nginx+Fluend日志收集 和redis、memcached、RabbitMQ、Celery
前言 一.docker 1.docker是什么? Docker的英文本意是“搬运工”,Docker搬运的是集装箱(Container)可以成为容器,我可以把写的Django的WEB应用以及Python ...
- Docker 部署 ELK 收集 Nginx 日志
一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
- 基于docker部署flask+gunicorn+nginx
nginx安装在/etc/下,项目映射在docker中的/var/www/下 1.创建docker容器将端口映射出来,将docker外的项目映射到docker中 #docker run -it -p ...
- Docker部署Mysql, Tomcat, Nginx, Redis
1. Mysql部署 问题及解决方案 容器内的网络和外部机器不能直接通信 外部机器和宿主机可以直接通信 宿主机和容器可以直接通信 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射 ...
- 用docker部署flask+gunicorn+nginx
说来惭愧,写了好几个flask django项目都是在原型阶段直接python app.py 运行的,涉及到部署用nginx和gunicorn 都是让别人帮我部署的,据说好像说很麻烦的样子,我就没自己 ...
- 使用 Docker 部署 MongoDB 分片
创建配置服务复制集 docker run --name configsvr0 -d mongo:3.6.2-jessie --configsvr --replSet "rs_configsv ...
随机推荐
- RabbitMQ学习笔记(二、RabbitMQ结构)
目录: RabbitMQ几大组件 交换器类型 RabbitMQ运行流程 RabbitMQ几大组件:(与RabbitMQ第一节中AMQP一样,不细说) 1.生产者.消费者.消息 2.Broker:简单的 ...
- selenium添加chrome配置项
selenium虽然强大,但也有不方便的地方,selenium每次启动浏览器都是一个全新的浏览器,并没有加载任何的配置,这样在爬取一些需要登陆才能看到的页面时就有些不太方便.但我们可以通过加载chro ...
- 元昊讲django框架
一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有 ...
- 鲜贝7.3--mysql安装
1.安装包下载 首先是下载 mysql-installer-community-5.6.14.0.msi ,大家可以到 mysql 官方网去下载. win10的安全机制比较严格,安装前最好到<设 ...
- zz阿里妈妈深度树检索技术(TDM)及应用框架的探索实践
分享嘉宾:何杰 阿里妈妈 高级算法专家 编辑整理:孙锴 内容来源:DataFun AI Talk 出品社区:DataFun 注:欢迎转载,转载请注明出处 导读:阿里妈妈是阿里巴巴集团旗下数字营销的大中 ...
- Bootstrap分页查询
前台方法: function show() { $('#reportTable').bootstrapTable({ method: 'get', url: "@Url.Action(&qu ...
- Nginx 安装与部署配置
下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放 ...
- Win10安装 oracle11g 出现INS-13001环境不满足最低要求解决方法
Win10安装 oracle11g 出现INS-13001环境不满足最低要求 首先,打开你的解压后的database文件夹,找到stage,然后cvu,找到cvu_prereq.xml文件,用note ...
- display Flex 盒子模型布局兼容Android UC
<!DOCTYPE html><html><head><meta charset="utf-8"><meta content= ...
- 「ZJOI2019」浙江省选
在八月来临前补完了zjoi2019 本来是想在八月前做完暑假作业的? 传送门 Description 给\(n\)条斜率为正的直线,询问每条直线是否在某处高度为前\(m\)名,如果是,询问最小排名 S ...