前几天讲完了Docker的大致的使用说明,今明两天进入实作环节。我们来利用Docker建立前後端的环境做一个小系统吧。这次实作我们前端使用常见的Vue,後端使用express。明天的教学我们再来加上postgres资料库变成一个完整的专案。
专案目录如下:
Docker Image除了像是上一篇我们讲的Dockerfile一层建立外,本身建立逻辑可以用叠积木的方式进行建立,Dockerfile的每一个指令都会堆叠一层Image层,因此Dockerfile的指令层数是越少越好。
打一个比方,思考一下node.js的流程与环境需要改动的地方:
npm install
取得的专案依赖,通常只需要npm install
一次,之後便能使用Express後端很单纯启动过程如下:
在express app根目录层新增一个Dockerfile
# dockerfile
# 使用node为base Image
FROM node:latest
# 设定为production环境
ENV NODE_ENV production
# 移动到工作用的dir
WORKDIR /usr/src/app
# 将package.json 放入该资料夹内 (安装依赖)
COPY package*.json ./
# 安装node_module
RUN npm install
# 把剩下的东西放入work_dir
COPY . .
# expose 和 执行
EXPOSE 3000
CMD ["npm","start"]
如果直接把外层的node_modules资料包COPY进docker内则每次重新build此image都要耗费大量的时间,因此如git有.gitignore,docker也有.dockerignore放在相同的根目录资料夹内让docker不会copy。
#.dockerignore
node_modules
npm-debug.log
接下来就是执行与启用,为了与前後端连结,我们新增一个network叫做itban_network
:
docker build -t mynode:latest .
docker network create itban_network
docker run -d -p 4200:3000 --name run_mynode --network itban_network mynode:latest
成功
为了区分develop环境与Production环境,我们新增的一个NODE_ENV可以在JS程序内的process.env.NODE_ENV
里面找到,配合.env档就能很好的区分出前後端的环境变数了。详细可以参考Github
<<: DAY15 MongoDB Explain 效能分析工具
前言: 昨天我们成功建立了php网页和mysql资料库的连线,让我们顺利的把一些使用者填写的资料送...
前言 参考文兼 https://kubernetes.io/docs/tasks/job/index...
我们透过 LeetCode #412 Fizz Buzz 来实际感受解决问题的过程 ( 题目连结 )...
Microsoft Defender for Endpoint 提供警报和检测的配置选项。 配置包括...
ProgressBar进度条是用来显示目前进度的原件,在系统处理一些耗时的工作时,以进度条来显示告知...