使用 Docker 部署 Egg 应用时切换环境参数

2,358 阅读1分钟

eggjs 指定运行环境方式

框架有两种方式指定运行环境:

1.通过 config/env 文件指定,该文件的内容就是运行环境,如 prod。一般通过构建工具来生成这个文件。
2.通过 EGG_SERVER_ENV 环境变量指定。
其中,方式 2 比较常用,因为通过 EGG_SERVER_ENV 环境变量指定运行环境更加方便,比如在生产环境启动应用:

EGG_SERVER_ENV=prod npm start

官方文档

配合 Docker 使用

使用 Egg 文档中的思想,配置即代码。需要预先编写好配置文件,通常来说,我们实际开发的工程不只一个环境,

为了实现一次构建,多次部署,需要将 app 打包成镜像,egg-script 启动脚本把环境写死就显得不那么灵活了。需要对上文那种启动写法进行一些调整。

我的做法是在Dockerfile设置默认启动命令

CMD yarn start

在启动容器的时候传入环境参数

docker run -e EGG_SERVER_ENV=uat yourimagename

这样容器启动的时候就可以将这个变量传递给应用

以上