数据库需要保证数据持久化,以及设置秘钥访问。 后端需要持久化保存日志,以及代码热更新。 前段需要代码热更新。
创建个网络:
docker network create multi-network
首先是数据库:
docker run -d --network multi-network --name some-mongo \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=admin \
-v mongodb:/data/db
mongo
在数据库连接的域名前加上 username:password@
即可,如:
mongodb://admin:admin@mongodb:27017/course-goals
更进一步可以在 dockerfile 中定义 ENV,然后使用 js 代码调用,虽然官方不推荐这么做。
后端:
docker run -d --rm --network multi-network --name multi-backend-app -v multi-logs:/app/backend/logs -v /app/backend/node_modules -v "E:\Study\docker\dockerLearning\1 初识docker\Multi-Container\multi-01-starting-setup\backend:/app/backend" multi-backend
前端:
docker run -d --rm --network multi-network --name multi-frontend-app -p 7749:3000 multi-frontend
React 前端是基于 node.js 环境,而在容器中的 node 仅仅运行 React 本体,实际上代码执行环境是在客户端的浏览器中,因此会导致无法访问docker内部的容器,即 http://multi-backend-app/goals
不会被docker处理。
故我们依然要用 http://localhost/goals
,且需要开放后端容器的 80 端口。