refactor(dockerfile): update dockerfile

This commit is contained in:
Mauricio Siu
2024-09-29 18:49:07 -06:00
parent 98aa474975
commit 03d7738032
3 changed files with 75 additions and 115 deletions

View File

@@ -11,6 +11,7 @@ jobs:
command: | command: |
cp apps/dokploy/.env.production.example .env.production cp apps/dokploy/.env.production.example .env.production
cp apps/dokploy/.env.production.example apps/dokploy/.env.production cp apps/dokploy/.env.production.example apps/dokploy/.env.production
- run: - run:
name: Build and push AMD64 image name: Build and push AMD64 image
command: | command: |
@@ -21,63 +22,63 @@ jobs:
TAG="canary" TAG="canary"
fi fi
docker build --platform linux/amd64 -t dokploy/dokploy:${TAG}-amd64 . docker build --platform linux/amd64 -t dokploy/dokploy:${TAG}-amd64 .
docker push dokploy/dokploy:${TAG}-amd64 # docker push dokploy/dokploy:${TAG}-amd64
build-arm64: # build-arm64:
machine: # machine:
image: ubuntu-2004:current # image: ubuntu-2004:current
resource_class: arm.large # resource_class: arm.large
steps: # steps:
- checkout # - checkout
- run: # - run:
name: Prepare .env file # name: Prepare .env file
command: | # command: |
cp apps/dokploy/.env.production.example .env.production # cp apps/dokploy/.env.production.example .env.production
cp apps/dokploy/.env.production.example apps/dokploy/.env.production # cp apps/dokploy/.env.production.example apps/dokploy/.env.production
- run: # - run:
name: Build and push ARM64 image # name: Build and push ARM64 image
command: | # command: |
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN # docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN
if [ "${CIRCLE_BRANCH}" == "main" ]; then # if [ "${CIRCLE_BRANCH}" == "main" ]; then
TAG="latest" # TAG="latest"
else # else
TAG="canary" # TAG="canary"
fi # fi
docker build --platform linux/arm64 -t dokploy/dokploy:${TAG}-arm64 . # docker build --platform linux/arm64 -t dokploy/dokploy:${TAG}-arm64 .
docker push dokploy/dokploy:${TAG}-arm64 # docker push dokploy/dokploy:${TAG}-arm64
combine-manifests: # combine-manifests:
docker: # docker:
- image: cimg/node:18.18.0 # - image: cimg/node:18.18.0
steps: # steps:
- checkout # - checkout
- setup_remote_docker # - setup_remote_docker
- run: # - run:
name: Create and push multi-arch manifest # name: Create and push multi-arch manifest
command: | # command: |
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN # docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN
if [ "${CIRCLE_BRANCH}" == "main" ]; then # if [ "${CIRCLE_BRANCH}" == "main" ]; then
VERSION=$(node -p "require('./apps/dokploy/package.json').version") # VERSION=$(node -p "require('./apps/dokploy/package.json').version")
echo $VERSION # echo $VERSION
TAG="latest" # TAG="latest"
docker manifest create dokploy/dokploy:${TAG} \
dokploy/dokploy:${TAG}-amd64 \
dokploy/dokploy:${TAG}-arm64
docker manifest push dokploy/dokploy:${TAG}
docker manifest create dokploy/dokploy:${VERSION} \ # docker manifest create dokploy/dokploy:${TAG} \
dokploy/dokploy:${TAG}-amd64 \ # dokploy/dokploy:${TAG}-amd64 \
dokploy/dokploy:${TAG}-arm64 # dokploy/dokploy:${TAG}-arm64
docker manifest push dokploy/dokploy:${VERSION} # docker manifest push dokploy/dokploy:${TAG}
else
TAG="canary" # docker manifest create dokploy/dokploy:${VERSION} \
docker manifest create dokploy/dokploy:${TAG} \ # dokploy/dokploy:${TAG}-amd64 \
dokploy/dokploy:${TAG}-amd64 \ # dokploy/dokploy:${TAG}-arm64
dokploy/dokploy:${TAG}-arm64 # docker manifest push dokploy/dokploy:${VERSION}
docker manifest push dokploy/dokploy:${TAG} # else
fi # TAG="canary"
# docker manifest create dokploy/dokploy:${TAG} \
# dokploy/dokploy:${TAG}-amd64 \
# dokploy/dokploy:${TAG}-arm64
# docker manifest push dokploy/dokploy:${TAG}
# fi
workflows: workflows:
build-all: build-all:
@@ -86,20 +87,22 @@ workflows:
filters: filters:
branches: branches:
only: only:
- main - feat/cloud
- canary # - main
- build-arm64: # - canary
filters: # -
branches: # - build-arm64:
only: # filters:
- main # branches:
- canary # only:
- combine-manifests: # - main
requires: # - canary
- build-amd64 # - combine-manifests:
- build-arm64 # requires:
filters: # - build-amd64
branches: # - build-arm64
only: # filters:
- main # branches:
- canary # only:
# - main
# - canary

View File

@@ -15,7 +15,9 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
# Deploy only the dokploy app # Deploy only the dokploy app
ENV NODE_ENV=production ENV NODE_ENV=production
RUN pnpm --filter=@dokploy/builders build
RUN pnpm --filter=./apps/dokploy run build RUN pnpm --filter=./apps/dokploy run build
RUN pnpm --filter=./apps/dokploy --prod deploy /prod/dokploy RUN pnpm --filter=./apps/dokploy --prod deploy /prod/dokploy
RUN cp -R /usr/src/app/apps/dokploy/.next /prod/dokploy/.next RUN cp -R /usr/src/app/apps/dokploy/.next /prod/dokploy/.next

View File

@@ -1,45 +0,0 @@
import type * as schema from "@/server/db/schema";
import type {
BuildQueryResult,
DBQueryConfig,
ExtractTablesWithRelations,
} from "drizzle-orm";
import { z } from "zod";
/*
* This is for testing purposes in the case we need a nested relational types
*
*/
type Schema = typeof schema;
type TSchema = ExtractTablesWithRelations<Schema>;
export type IncludeRelation<TableName extends keyof TSchema> = DBQueryConfig<
"one" | "many",
boolean,
TSchema,
TSchema[TableName]
>["with"];
export type InferResultType<
TableName extends keyof TSchema,
With extends IncludeRelation<TableName> | undefined = undefined,
> = BuildQueryResult<
TSchema,
TSchema[TableName],
{
with: With;
}
>;
type AnyObj = Record<PropertyKey, unknown>;
type ZodObj<T extends AnyObj> = {
[key in keyof T]: z.ZodType<T[key]>;
};
const zObject = <T extends AnyObj>(arg: ZodObj<T>) => z.object(arg);
// const goodDogScheme = zObject<UserWithPosts>({
// // prueba: schema.selectDatabaseSchema,
// // domain: z.string(),
// // domainId: z.string(),
// });