React 应用程序拥有暂存环境并在 AWS Elastic BeanStalk 上使用 Docker 进行部署
React Application to have a staging environment and deploying with Docker on AWS Elastic BeanStalk
我正在开发一个由 create-react-app 创建的 React 应用程序。我在 AWS Elastic BeanStalk 上有两个环境,暂存环境和生产环境。我正在通过 Docker 部署我的应用程序。我正在使用 CircleCI 进行自动化部署。
我的问题是我想在构建 React 应用程序时更改端点 url。
我正在使用 cross-env 来设置变量 REACT_APP_API_HOST
但我必须 运行 一个命令 build:staging
来构建它。
我不知道如何使用这个 docker。
Docker 文件
FROM node:12
WORKDIR /app
COPY . /app
RUN npm install
RUN npm run build
RUN npm install -g serve
EXPOSE 3000
ENTRYPOINT ["serve", "-l", "3000", "-s", "build", "-d"]
以及 package.json 文件的脚本部分
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"build:staging": "cross-env REACT_APP_API_HOST=staging react-scripts build",
"build:prod": "cross-env REACT_APP_API_HOST=production react-scripts build"
},
所以经过长时间的研发,我和朋友找到的答案是 运行 在将它部署到 Elastic Beanstalk 之前做一个中间脚本。
buildDocker.sh
#!/bin/bash
branch_name=$(git symbolic-ref --short -q HEAD)
if [ "$branch_name" == "develop" ]; then
result_sed=$(sed 's/RUN npm run build/RUN npm run build:staging/g' Dockerfile)
echo "$result_sed" > Dockerfile
elif [ "$branch_name" == "master" ]; then
result_sed=$(sed 's/RUN npm run build/RUN npm run build:prod/g' Dockerfile)
echo "$result_sed" > Dockerfile
fi
我正在开发一个由 create-react-app 创建的 React 应用程序。我在 AWS Elastic BeanStalk 上有两个环境,暂存环境和生产环境。我正在通过 Docker 部署我的应用程序。我正在使用 CircleCI 进行自动化部署。
我的问题是我想在构建 React 应用程序时更改端点 url。
我正在使用 cross-env 来设置变量 REACT_APP_API_HOST
但我必须 运行 一个命令 build:staging
来构建它。
我不知道如何使用这个 docker。
Docker 文件
FROM node:12
WORKDIR /app
COPY . /app
RUN npm install
RUN npm run build
RUN npm install -g serve
EXPOSE 3000
ENTRYPOINT ["serve", "-l", "3000", "-s", "build", "-d"]
以及 package.json 文件的脚本部分
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"build:staging": "cross-env REACT_APP_API_HOST=staging react-scripts build",
"build:prod": "cross-env REACT_APP_API_HOST=production react-scripts build"
},
所以经过长时间的研发,我和朋友找到的答案是 运行 在将它部署到 Elastic Beanstalk 之前做一个中间脚本。
buildDocker.sh
#!/bin/bash
branch_name=$(git symbolic-ref --short -q HEAD)
if [ "$branch_name" == "develop" ]; then
result_sed=$(sed 's/RUN npm run build/RUN npm run build:staging/g' Dockerfile)
echo "$result_sed" > Dockerfile
elif [ "$branch_name" == "master" ]; then
result_sed=$(sed 's/RUN npm run build/RUN npm run build:prod/g' Dockerfile)
echo "$result_sed" > Dockerfile
fi