Реагируйте на приложение для создания промежуточной среды и развертывания с Docker на AWS Elasti c BeanStalk - PullRequest
1 голос
/ 15 января 2020

Я работаю над приложением реагирования, созданным с помощью create-реагировать-приложение. У меня есть две среды на AWS Elasti c BeanStalk, постановка и производство. Я развертываю свое приложение через Docker. Я использую CircleCI для автоматического развертывания.

Моя проблема заключается в том, что я хочу изменить URL-адрес конечной точки при создании приложения реагирования.

Я использую cross-env для установки переменной REACT_APP_API_HOST, но мне нужно запустить команду build:staging для ее создания.

Я не уверен, как это сделать с этим docker.

Docker file

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"]

И часть сценариев пакета. json file

"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"
    },

1 Ответ

0 голосов
/ 17 января 2020

Итак, после долгих НИОКР, ответ, который я нахожу с моим другом, заключается в запуске промежуточного сценария перед его развертыванием в Elasti c Beanstalk.

build Docker. 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
...