diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000..3c1c851 --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,35 @@ +name: CICD + +on: + push: + branches: + - deploy-to-ec2 + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Source + uses: actions/checkout@v3 + + - name: Login to Docker Hub + run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Build Docker Image + run: docker build -t integrationninjas/reactjs-app . + + - name: Publish image to docker hub + run: docker push integrationninjas/reactjs-app:latest + +deploy: + needs: build + runs-on: aws-ec2 # Ändern Sie dies in eine gültige Runner-Umgebung + steps: + - name: Pull image from docker hub + run: docker pull integrationninjas/reactjs-app:latest + + - name: Delete Old Container + run: docker rm -f reactContainer + + - name: Run docker container + run: docker run -d -p 3000:80 --name reactContainer integrationninjas/reactjs-app diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9929157 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +# step 1 build react app +FROM node:alpine3.18 as build +WORKDIR /app +COPY package.json . +RUN npm install +COPY . . +RUN npm run build + +# step 2 server with Nginx +FROM Nginx:1.23-alpine +WORKDIR /user/share/Nginx/html +RUN rm -rf * +COPY --from=build /app/build . +EXPOSE 80 +ENTRYPOINT [ "Nginx", "-g" "deamon off;"] +