容器化一个简单的 Mern stack app
前端由 React 组成, 后端由 Node 和 MongoDB 组成。
1. 创建 docker 网络:
docker network create goals-net
2. 创建 MongoDB 容器
docker run --name mongodb -d --rm --network goals-net mongo
3. 创建 Node 容器
3.1 创建image:
docker build -t goals-node .
3.2 创建容器:
docker run --rm -d -p 80:80 --network goals-net goals-node
4. 创建 React 容器:
4.1 创建 image:
docker build -t goals-react .
4.2 创建容器:
docker run --name react-frontend -it --rm -d -p 3000:3000 goals-react
5. 代码中和 ip 有关的设置:
5.1 后端连 MongoDB 部分的代码:
这里 mongodb
是运行MongoDB的容器的名称。
mongoose.connect('mongodb://mongodb:27017/course-goals',(err) => {} else {app.listen(80);}}
);
5.2 react 与 node 通信的代码不需要修改
例如下面的代码段,localhost
不能改成 goals-backend
,依然保持为 localhost
, 原因是对于 react, 只有使用 npm start
启动的开发服务器在容器中运行,其他代码在浏览器中运行。
useEffect(function () {async function fetchData() {setIsLoading(true);try {const response = await fetch("http://localhost/goals");const resData = await response.json();if (!response.ok) {throw new Error(resData.message || "Fetching the goals failed.");}setLoadedGoals(resData.goals);} catch (err) {setError(err.message ||"Fetching goals failed - the server responsed with an error.");}setIsLoading(false);}fetchData();}, []);
因为 react 代码在浏览器中运行,不在容器中运行,因此不需要指定 --network
选项,因为用不到。
后端 node 需要使用 --publish
发布端口号,因为前端代码不在容器中执行。
容器化一个简单的 Mern stack app相关推荐
- 一个简单的智能停车APP——抽屉式侧边栏
一个简单的智能停车APP 功能介绍 代码详解 总结 功能介绍 先展示效果图: 侧边栏由MaterialDesign(原质化设计)框架设计而成. 由DrawerLayout+NavigationView ...
- Android——一个简单的记账本APP
一个简单的记账本APP 视频效果预览 添加账目记录 效果预览 添加账目记录实现 简述 实现 获取日期 字符串时间戳转Date Date转星期 获取时间 Switch控制显示和隐藏 更改Switch样式 ...
- 使用Flutter编写一个简单的天气查询App
使用Flutter编写一个简单的天气查询App Flutter项目目录分析 入口函数 home:主页面 编写天气应用 网络请求 数据解析 布局编写 Flutter里基础的Widget 上 中 下 Fl ...
- Flutter for App——一个简单的BMI计算APP
一个简单的BMI计算APP 效果截图 初始化 布局 顶部区域 标题 计算结果 组合顶部区域 背景 中间区域 输入框 输入行 计算按钮 分界线 组合中间区域 底部区域 页面组合 BMI计算 Toast弹 ...
- 如何制作一个简单的短视频 app
如果想制作一个简单的短视频 app,可以考虑以下步骤: 确定 app 的目标和功能:需要明确 app 的目标受众和提供的功能,以确定 app 的整体设计方向. 选择开发平台:根据自己的技术能力和预算选 ...
- Flutter 实现一个简单的音视频App(一)
Flutter 实现一个简单的音视频App(一) 本文由动哒公众号(dongda_5g),QQ群(174353204)提供,欢迎关注获取技术支持,有任何问题群里都会回复. 在app中实现视频功能,是现 ...
- 【如何快速的开发一个简单的iOS直播app】(代码篇)
开篇([如何快速的开发一个完整的iOS直播app](原理篇) ) 好久没写简书,因为好奇的我跑去学习直播了,今天就分享一下我的感慨. 目前为止直播还是比较热点的技术的,简书,git上有几篇阅读量和含金 ...
- 自己写的一个简单的android记事本app
自己写的一个简单的记事本app,效果如下: 一.首先是第一个界面的编写,最上面是一个TextView,中间是一个Linearlayout中嵌套一个listview布局,最下面是一个button.下面附 ...
- 一个简单的猜数字APP(一)
使用约束布局ConstraintLayout,郭霖大神的ConstraintLayout解析 得到随机数字 [Java学习]几种常用类 一些简单控件的使用[安卓初步]常用控件 进入界面 如上图,关键是 ...
最新文章
- 关于新技术的引入原则 ——从零开始学架构
- 数学——Euler方法求解微分方程详解(python3)
- [Vani有约会]雨天的尾巴 (线段树合并)
- jdbc查看网络状态
- mysql 时区设置
- 伤肾的九个恶习及解决办法(图)
- pytorch.tensor格式图像的resize操作
- winform制作简单计算器
- VS C#生成dll,C#和unity工程调用
- cpuv(cpuv2和v3有什么区别)
- Team Tic Tac Toe--数据结构set的妙用
- Unity笔记-29-ARPG游戏项目-01-第三人称相机
- 体重 年龄 性别 身高 预测鞋码_用身高和体重数据进行性别分类的实验报告
- JCA - 核心类和接口 - Cipher类
- 消防工程师 8.3 防排烟系统-排烟
- Spring Boot 整合 shiro 之盐值加密认证详解(六)
- 文件服务器之:NFS服务器
- 什么网站可以测试敏感词?
- hdoj-2550 百步穿杨
- 利用百分位数确定考核指标的具体数字