From cfac5b116e3e262e6f3584ebc877f89d1a965e2b Mon Sep 17 00:00:00 2001 From: "yassin@siouda.com" Date: Wed, 11 Oct 2023 16:58:00 +0200 Subject: [PATCH 1/3] wip(ci): docker dev and prod build + ci --- .github/workflows/build_docker.yml | 33 ++++++++++++++++++++++++++++++ Dockerfile | 28 +++++++++++++++++++++++++ docker-compose.yml | 18 ++++++++++++++++ package.json | 4 ++-- 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/build_docker.yml create mode 100644 Dockerfile create mode 100644 docker-compose.yml 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 From f51c141fd85a9fd65b083b7fd156f6f7609a6cbd Mon Sep 17 00:00:00 2001 From: "yassin@siouda.com" Date: Wed, 11 Oct 2023 17:03:41 +0200 Subject: [PATCH 2/3] chore: updated readme --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 83c16c0..cbfe98f 100644 --- a/README.md +++ b/README.md @@ -42,3 +42,14 @@ To build a standalone browser application using [Tauri](https://tauri.app/), you - `yarn tauri dev` The `tauri` version is only here to quickstart future developments but nothing has been done yet. + +## Docker + +### Run the application +`docker run -p 8001:80 yassinsiouda/topos:latest` + +### Build and run the prod image +`docker compose --profile prod up` + +### Build and run the dev image +`docker compose --profile dev up` \ No newline at end of file From 7b0d708a2fcdebd4d3e2de19f636373bb23e5850 Mon Sep 17 00:00:00 2001 From: "yassin@siouda.com" Date: Wed, 11 Oct 2023 17:15:26 +0200 Subject: [PATCH 3/3] chore(docker): volume mapping for dev --- README.md | 15 ++++++++++++++- docker-compose.yml | 10 ++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cbfe98f..04805d0 100644 --- a/README.md +++ b/README.md @@ -52,4 +52,17 @@ The `tauri` version is only here to quickstart future developments but nothing `docker compose --profile prod up` ### Build and run the dev image -`docker compose --profile dev up` \ No newline at end of file + +**First installation** +First you need to map node_modules to your local machine for your ide intellisense to work properly +```bash +docker compose --profile dev up -d +docker cp topos-dev:/app/node_modules . +docker compose --profile dev down +``` + +**Then** +```bash +docker compose --profile dev up +``` + diff --git a/docker-compose.yml b/docker-compose.yml index 1632b74..0021919 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,16 @@ services: build: context: . target: "dev" + volumes: + - ./src:/app/src + - ./fonts:/app/fonts + - ./img:/app/img + - ./package.json:/app/package.json + - ./postcss.config.js:/app/postcss.config.js + - ./tailwind.config.js:/app/tailwind.config.js + - ./tsconfig.json:/app/tsconfig.json + - ./vite.config.js:/app/vite.config.js + - ./yarn.lock:/app/yarn.lock ports: - "8000:8000" topos-prod: