diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..2051680b4 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,50 @@ +name: Build Docs & Website Docker images + +on: + push: + branches: ["canary", "main"] + +jobs: + build-and-push-image-docs: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile.docs + push: true + tags: dokploy/docs:latest + platforms: linux/amd64 + + build-and-push-image-website: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile.website + push: true + tags: dokploy/website:latest + platforms: linux/amd64 diff --git a/Dockerfile.docs b/Dockerfile.docs new file mode 100644 index 000000000..71b790ec3 --- /dev/null +++ b/Dockerfile.docs @@ -0,0 +1,35 @@ +FROM node:18-alpine AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +FROM base AS build +COPY . /usr/src/app +WORKDIR /usr/src/app + + +# Install dependencies +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --filter=./apps/docs --frozen-lockfile + +# Deploy only the dokploy app + +ENV NODE_ENV=production +RUN pnpm --filter=./apps/docs run build +RUN pnpm --filter=./apps/docs --prod deploy /prod/docs + +RUN cp -R /usr/src/app/apps/docs/.next /prod/docs/.next + +FROM base AS dokploy +WORKDIR /app + +# Set production +ENV NODE_ENV=production + +# Copy only the necessary files +COPY --from=build /prod/docs/.next ./.next +COPY --from=build /prod/docs/public ./public +COPY --from=build /prod/docs/package.json ./package.json +COPY --from=build /prod/docs/node_modules ./node_modules + +EXPOSE 3000 +CMD HOSTNAME=0.0.0.0 && pnpm start \ No newline at end of file diff --git a/Dockerfile.website b/Dockerfile.website new file mode 100644 index 000000000..9932f5271 --- /dev/null +++ b/Dockerfile.website @@ -0,0 +1,35 @@ +FROM node:18-alpine AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +FROM base AS build +COPY . /usr/src/app +WORKDIR /usr/src/app + + +# Install dependencies +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --filter=./apps/website --frozen-lockfile + +# Deploy only the dokploy app + +ENV NODE_ENV=production +RUN pnpm --filter=./apps/website run build +RUN pnpm --filter=./apps/website --prod deploy /prod/website + +RUN cp -R /usr/src/app/apps/website/.next /prod/website/.next + +FROM base AS dokploy +WORKDIR /app + +# Set production +ENV NODE_ENV=production + +# Copy only the necessary files +COPY --from=build /prod/website/.next ./.next +COPY --from=build /prod/website/public ./public +COPY --from=build /prod/website/package.json ./package.json +COPY --from=build /prod/website/node_modules ./node_modules + +EXPOSE 3000 +CMD HOSTNAME=0.0.0.0 && pnpm start \ No newline at end of file