From b2294274955977347f6fe2ce5108fd5ee794f8da Mon Sep 17 00:00:00 2001 From: tbxark Date: Wed, 13 Nov 2024 23:05:35 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BF=AE=E6=94=B9docker=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 5 +-- .github/workflows/cloudflare.yml | 4 +- Dockerfile | 16 ++++---- Makefile | 53 +++++++++++++++++++++++++ docker-compose.yaml | 3 +- package.json | 10 +++-- packages/apps/local/package.docker.json | 11 +++++ packages/apps/vercel/vercel.json | 9 ----- vercel.json | 9 +++++ 9 files changed, 91 insertions(+), 29 deletions(-) create mode 100644 Makefile create mode 100644 packages/apps/local/package.docker.json delete mode 100644 packages/apps/vercel/vercel.json create mode 100644 vercel.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6964b73d8..43d485fff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,4 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 20 - - run: npm install -g pnpm - - run: pnpm install - - run: pnpm run build - - run: node ./dist/index.js \ No newline at end of file + - run: make install && make all \ No newline at end of file diff --git a/.github/workflows/cloudflare.yml b/.github/workflows/cloudflare.yml index 0c852c411..7c99e292c 100644 --- a/.github/workflows/cloudflare.yml +++ b/.github/workflows/cloudflare.yml @@ -19,9 +19,7 @@ jobs: cat << 'EOF' > wrangler.toml ${{secrets.WRANGLER_TOML}} EOF - - run: npm install -g pnpm - - run: pnpm install - - run: pnpm run build + - run: make install && make workers - run: CLOUDFLARE_API_TOKEN=${{ secrets.CF_API_TOKEN }} pnpm run wrangler deploy --config=wrangler.toml > /dev/null - name: Check CF_WORKERS_DOMAIN exists diff --git a/Dockerfile b/Dockerfile index 6f567d62d..0ca74796a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,15 @@ FROM node:alpine AS build WORKDIR /app -COPY package.json tsconfig.json vite.config.ts ./ -RUN npm install -COPY packages src -RUN npm run build:local +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +RUN npm install && npm install -g pnpm +COPY . . +RUN pnpm install && pnpm -r run build FROM node:alpine AS production WORKDIR /app -COPY package.json ./ -RUN npm install --omit=dev -COPY --from=build /app/dist ./dist +COPY packages/apps/local/package.docker.json package.json +RUN npm install +COPY --from=build /app/packages/apps/local/dist/index.js index.js EXPOSE 8787 -CMD ["npm", "run", "start:dist"] \ No newline at end of file +CMD ["npm", "run", "start"] \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..eef602835 --- /dev/null +++ b/Makefile @@ -0,0 +1,53 @@ +export PATH := $(shell pwd)/node_modules/.bin:$(PATH) +SHELL := /bin/bash + +.PHONY: init +init: + npm install -g pnpm + pnpm install + +.PHONY: version +version: + pnpm run version + +.PHONY: core +core: version + pnpm run --filter @chatgpt-telegram-workers/core build + +.PHONY: next +next: core + pnpm run --filter @chatgpt-telegram-workers/next build + +.PHONY: local +local: next + pnpm run --filter @chatgpt-telegram-workers/local build + +.PHONY: vercel +vercel: core + pnpm run --filter @chatgpt-telegram-workers/vercel build + +.PHONY: workers +workers: core + pnpm run --filter @chatgpt-telegram-workers/workers build + cp -r packages/apps/workers/dist/* dist/ + +.PHONY: workers-next +workers-next: next + pnpm run --filter @chatgpt-telegram-workers/workers build + +.PHONY: all +all: + pnpm -r run build + +.PHONY: docker +docker: + docker build -t chatgpt-telegram-workers:latest . + +.PHONY: docker-all +docker-all: + docker build --platform linux/amd64,linux/arm64 -t tbxark/chatgpt-telegram-workers:latest --push . + +.PHONY: deploy-workers +deploy-workers: workers + wrangler deploy --config=wrangler.toml + diff --git a/docker-compose.yaml b/docker-compose.yaml index 932f99f67..58c03307c 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -7,5 +7,4 @@ services: volumes: - ./config.json:/app/config.json:ro # change `./config.json` to your local path - ./wrangler.toml:/app/wrangler.toml:ro # change `./wrangler.toml` to your local path - network_mode: "host" # If you access the proxy port based on the host - entrypoint: ["npm", "run", "start:dist"] \ No newline at end of file + network_mode: "host" # If you access the proxy port based on the host \ No newline at end of file diff --git a/package.json b/package.json index 831e65e27..a5ab4b040 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,13 @@ "scripts": { "lint": "eslint --fix *.js *.ts packages plugins scripts", "version": "tsx scripts/gen-version.ts", - "build": "pnpm run version && pnpm -r run build && cp packages/apps/workers/dist/index.js dist/index.js", - "deploy:dist": "wrangler deploy", - "deploy:build": "pnpm run build && wrangler deploy", + "build:core": "make core", + "build:next": "make next", + "build:local": "make local", + "build:vercel": "make vercel", + "build:workers": "make workers", + "build:workers-next": "make workers-next", + "build:all": "make all", "wrangler": "wrangler" }, "workspaces": [ diff --git a/packages/apps/local/package.docker.json b/packages/apps/local/package.docker.json new file mode 100644 index 000000000..f4e190a91 --- /dev/null +++ b/packages/apps/local/package.docker.json @@ -0,0 +1,11 @@ +{ + "name": "@chatgpt-telegram-workers/local", + "type": "module", + "version": "1.10.2", + "scripts": { + "start": "node index.js" + }, + "dependencies": { + "cloudflare-worker-adapter": "^1.3.3" + } +} diff --git a/packages/apps/vercel/vercel.json b/packages/apps/vercel/vercel.json deleted file mode 100644 index cea28f9db..000000000 --- a/packages/apps/vercel/vercel.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "buildCommand": "pnpm run build", - "builds": [ - { "src": "dist/**", "use": "@vercel/node" } - ], - "routes": [ - { "src": "/(.*)", "dest": "/dist" } - ] -} diff --git a/vercel.json b/vercel.json new file mode 100644 index 000000000..ff8cc0155 --- /dev/null +++ b/vercel.json @@ -0,0 +1,9 @@ +{ + "buildCommand": "pnpm run build", + "builds": [ + { "src": "packages/apps/vercel/dist//**", "use": "@vercel/node" } + ], + "routes": [ + { "src": "/(.*)", "dest": "/packages/apps/vercel/dist/**" } + ] +}