diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..9796960 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,39 @@ +name: Multi Stage + +on: + push: + branches: master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: checkout code + uses: actions/checkout@v6 + + - name: build docker image + run: docker build --tag my-image:v1 . + + - name: Push to ECR + id: ecr + uses: jwalton/gh-ecr-push@v2 + with: + access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + region: us-east-1 + local-image: my-image:v1 + image: react-app:latest + + - name: create container on ec2 via github hosted runner + uses: appleboy/ssh-action@v1 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + key: ${{ secrets.EC2_SSH_KEY }} + port: ${{ secrets.PORT }} + script: | + sudo aws ecr get-login-password --region us-east-1 | sudo docker login --username AWS --password-stdin 503561451075.dkr.ecr.us-east-1.amazonaws.com + sudo docker pull 503561451075.dkr.ecr.us-east-1.amazonaws.com/react-app:latest + sudo docker run -itd -p 80:80 503561451075.dkr.ecr.us-east-1.amazonaws.com/react-app + diff --git a/Dockerfile b/Dockerfile index 2aa90f0..cdf249a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,25 @@ -# build environment -FROM node:12.2.0-alpine as build -WORKDIR /app +FROM node:12.2.0-alpine as ryannode +WORKDIR /app ENV PATH /app/node_modules/.bin:$PATH -COPY package.json /app/package.json + +COPY package.json . RUN npm install --silent -RUN npm config set unsafe-perm true #https://stackoverflow.com/questions/52196518/could-not-get-uid-gid-when-building-node-docker +RUN npm config set unsafe-perm true RUN npm install react-scripts@3.0.1 -g --silent -COPY . /app + +COPY . . RUN npm run build -# production environment -FROM nginx:1.16.0-alpine -COPY --from=build /app/build /usr/share/nginx/html + +FROM nginx:alpine + +COPY --from=ryannode /app/build /usr/share/nginx/html + EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] + +CMD ["nginx", "-g", "daemon off;"] + + + +