前端由 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相关推荐

  1. 一个简单的智能停车APP——抽屉式侧边栏

    一个简单的智能停车APP 功能介绍 代码详解 总结 功能介绍 先展示效果图: 侧边栏由MaterialDesign(原质化设计)框架设计而成. 由DrawerLayout+NavigationView ...

  2. Android——一个简单的记账本APP

    一个简单的记账本APP 视频效果预览 添加账目记录 效果预览 添加账目记录实现 简述 实现 获取日期 字符串时间戳转Date Date转星期 获取时间 Switch控制显示和隐藏 更改Switch样式 ...

  3. 使用Flutter编写一个简单的天气查询App

    使用Flutter编写一个简单的天气查询App Flutter项目目录分析 入口函数 home:主页面 编写天气应用 网络请求 数据解析 布局编写 Flutter里基础的Widget 上 中 下 Fl ...

  4. Flutter for App——一个简单的BMI计算APP

    一个简单的BMI计算APP 效果截图 初始化 布局 顶部区域 标题 计算结果 组合顶部区域 背景 中间区域 输入框 输入行 计算按钮 分界线 组合中间区域 底部区域 页面组合 BMI计算 Toast弹 ...

  5. 如何制作一个简单的短视频 app

    如果想制作一个简单的短视频 app,可以考虑以下步骤: 确定 app 的目标和功能:需要明确 app 的目标受众和提供的功能,以确定 app 的整体设计方向. 选择开发平台:根据自己的技术能力和预算选 ...

  6. Flutter 实现一个简单的音视频App(一)

    Flutter 实现一个简单的音视频App(一) 本文由动哒公众号(dongda_5g),QQ群(174353204)提供,欢迎关注获取技术支持,有任何问题群里都会回复. 在app中实现视频功能,是现 ...

  7. 【如何快速的开发一个简单的iOS直播app】(代码篇)

    开篇([如何快速的开发一个完整的iOS直播app](原理篇) ) 好久没写简书,因为好奇的我跑去学习直播了,今天就分享一下我的感慨. 目前为止直播还是比较热点的技术的,简书,git上有几篇阅读量和含金 ...

  8. 自己写的一个简单的android记事本app

    自己写的一个简单的记事本app,效果如下: 一.首先是第一个界面的编写,最上面是一个TextView,中间是一个Linearlayout中嵌套一个listview布局,最下面是一个button.下面附 ...

  9. 一个简单的猜数字APP(一)

    使用约束布局ConstraintLayout,郭霖大神的ConstraintLayout解析 得到随机数字 [Java学习]几种常用类 一些简单控件的使用[安卓初步]常用控件 进入界面 如上图,关键是 ...

最新文章

  1. 关于新技术的引入原则 ——从零开始学架构
  2. 数学——Euler方法求解微分方程详解(python3)
  3. [Vani有约会]雨天的尾巴 (线段树合并)
  4. jdbc查看网络状态
  5. mysql 时区设置
  6. 伤肾的九个恶习及解决办法(图)
  7. pytorch.tensor格式图像的resize操作
  8. winform制作简单计算器
  9. VS C#生成dll,C#和unity工程调用
  10. cpuv(cpuv2和v3有什么区别)
  11. Team Tic Tac Toe--数据结构set的妙用
  12. Unity笔记-29-ARPG游戏项目-01-第三人称相机
  13. 体重 年龄 性别 身高 预测鞋码_用身高和体重数据进行性别分类的实验报告
  14. JCA - 核心类和接口 - Cipher类
  15. 消防工程师 8.3 防排烟系统-排烟
  16. Spring Boot 整合 shiro 之盐值加密认证详解(六)
  17. 文件服务器之:NFS服务器
  18. 什么网站可以测试敏感词?
  19. hdoj-2550 百步穿杨
  20. 利用百分位数确定考核指标的具体数字

热门文章

  1. 【无标题】奥的斯故障223 1TH-Fault 2TH Fault故障分析
  2. 【直播教程】直播间没人看?5大技巧教你提升!
  3. 海鲜和水果不能一起吃吗?
  4. C#如何获取局域网ip地址
  5. 如何设计群发系统消息表
  6. 2020主流室内定位技术对比
  7. 室内定位方案部署WIFI定位还是IBeacon定位-新导智能
  8. 初学者如何学习一门新的计算机语言!!!
  9. canvas 将两张图片叠加
  10. 如何使用Movavi Video Editor去除影片中的声音或音乐