Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -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

28 changes: 18 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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;"]