umi配置多环境变量并在docker中跑起来验证

本文记录了一个umi项目从0到1的开发过程中,如何配置多环境变量(test和prod)并使用docker容器结合nginx在本地进行部署验证的过程。详细描述了创建config文件夹,配置环境变量,编写Dockerfile和nginx配置文件,以及打包、构建镜像和启动容器的步骤。

1、项目背景

最近开始自己负责一个umi项目从0到1的开发,中间遇到的环境变量配置问题记录一下,顺便再熟悉下前端项目在docker中的部署过程。
主要依赖包版本如下:
在这里插入图片描述
安装cross-env包兼容不同的服务器(linux或者windows等)

2、配置环境变量

这里是配置了 test 和 prod 两个环境

  • 先在跟目录下建立config文件夹,文件夹下再建立三个config文件: config.js,
    config.test.js, config.prod.js, 如下所示:

在这里插入图片描述

  • 其中config.test.js 和 config.prod.js 中分别配置不同的process.env.UMI_ENV的值。
    然后在package.json中写入不同环境下的build命令
    在这里插入图片描述
  • 最后在页面中打印配置好的环境变量,不同的环境应该会看到不同的值

在这里插入图片描述

3、使用docker 容器 + nginx在本地运行

设置好不同的环境变量后,先试下测试环境在docker中跑起来,通过打印检查配置是否生效。在此之前我们要先在本地电脑安装好docker并打开(小白教程在这里

  • 第一步先在本地根目录建一个test.Dockerfile文件, 内容如下:
# 拉取nginx镜像
FROM nginx:alpine
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&
### 如何在 Docker 中设置和使用环境变量 #### 方法一:通过 `Dockerfile` 设置环境变量 可以在构建镜像的过程中,在 `Dockerfile` 文件中使用 `ENV` 指令来定义环境变量。这些变量会在容器启动时自动生效[^1]。 示例代码如下: ```dockerfile FROM ubuntu:latest ENV IS_DOCKER=true \ APP_ENV=production CMD ["echo", "$IS_DOCKER and $APP_ENV"] ``` #### 方法二:通过 `docker run --env` 动态传递环境变量 当运行容器时,可以使用 `--env` 或 `-e` 参数动态传入环境变量。这种方式适合于需要根据不同场景灵活调整的情况[^2]。 示例命令如下: ```bash docker run -it --rm --name my-container --env MY_VAR=value ubuntu bash ``` #### 方法三:通过 `.env` 文件批量加载环境变量 如果存在多个环境变量需要配置,可以通过创建一个 `.env` 文件指定路径的方式来简化操作。`.env` 文件中的每一行应遵循 `KEY=VALUE` 的格式[^3]。 示例 `.env` 文件内容: ``` DB_HOST=localhost DB_PORT=5432 ``` 对应的 `docker-compose.yml` 配置文件: ```yaml version: '3' services: app: image: my-app-image env_file: - .env ``` #### 方法四:利用构建阶段的参数化支持 对于某些敏感数据(如用户名、密码),可以直接在构建过程中作为参数注入,而不将其硬编码到镜像内部。这可通过 `--build-arg` 来完成[^5]。 示例命令如下: ```bash docker build --build-arg ARTIFACTORY_USERNAME=admin --build-arg ARTIFACTORY_SECRET_TOKEN=password . ``` 需要注意的是,为了防止缓存干扰实际效果,还可以附加 `--no-cache` 标志位强制重新生成每一步骤的结果。 --- ### 使用注意事项 尽管上述方式均能有效达成目标,但在生产环境中需特别留意安全性问题。例如避免将机密信息暴露给无关人员访问范围之外的地方。另外,确保所使用的工具链版本一致也很重要,比如文中提到的一个 umi 项目的案例里就强调了跨平台兼容性的需求[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值