diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml new file mode 100644 index 0000000..cef5ba9 --- /dev/null +++ b/.github/workflows/build_docker.yml @@ -0,0 +1,33 @@ +name: Build and Push Docker Images + +on: + push: + branches: + - 'main' +jobs: + topos: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + context: . + # based on branch push tag latest for main with commit sha + tags: yassinsiouda/topos:latest, yassinsiouda/topos:main-${{ github.sha }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8387a57 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM node:lts-alpine as dev + +WORKDIR /app +COPY ./ /app + +# install dependencies +RUN yarn install + +# Run dev +ENTRYPOINT [ "yarn", "run", "dev" ] + +FROM node:lts-alpine as build + +WORKDIR /app + +# copy node modules from dev stage +COPY --from=dev /app/ /app/ + +# build +RUN yarn run build + +FROM nginx:alpine as prod + +COPY --from=build /app/dist /usr/share/nginx/html + +EXPOSE 80 + +ENTRYPOINT ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1632b74 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3.7' +services: + topos-dev: + container_name: topos-dev + profiles: ["dev"] + build: + context: . + target: "dev" + ports: + - "8000:8000" + topos-prod: + container_name: topos-prod + profiles: ["prod"] + build: + context: . + target: "prod" + ports: + - "8001:80" \ No newline at end of file diff --git a/package.json b/package.json index 996194a..861131e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "tsc && vite build", "preview": "vite preview" }, @@ -42,4 +42,4 @@ "zifferjs": "^0.0.32", "zzfx": "^1.2.0" } -} +} \ No newline at end of file