diff --git a/.drone.yml b/.drone.yml index f40c24b..0f1ee2e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,24 +10,9 @@ steps: settings: username: fudaoyuanicu repo: fudaoyuanicu/015-backend - context: ./backend/ password: from_secret: docker_password - dockerfile: ./backend/Dockerfile - tags: - - ${DRONE_TAG} - - latest - build_args: - - BUILD_TAG=${DRONE_TAG} - - name: build-frontend - image: plugins/docker - settings: - username: fudaoyuanicu - repo: fudaoyuanicu/015-frontend - context: ./front/ - password: - from_secret: docker_password - dockerfile: ./front/Dockerfile + dockerfile: Dockerfile tags: - ${DRONE_TAG} - latest diff --git a/015.sh b/015.sh new file mode 100644 index 0000000..1156975 --- /dev/null +++ b/015.sh @@ -0,0 +1,2 @@ +#!/bin/sh +/bin/backend & node /app/server/index.mjs \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..955417e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +FROM node:22-alpine AS front-base + +# Install dependencies only when needed +FROM front-base AS front-deps +RUN apk add --no-cache libc6-compat +WORKDIR /app +COPY front/package.json ./ +RUN corepack enable pnpm && pnpm i + + +FROM front-base AS front-builder +WORKDIR /app +COPY --from=front-deps /app/node_modules ./node_modules +COPY front/ . +RUN corepack enable pnpm && pnpm i && pnpm build + +FROM golang:1.23.1 AS backend-builder +WORKDIR /app +# Download Go modules +COPY backend/go.mod backend/go.sum ./ +RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go mod download +# Copy the source code. Note the slash at the end, as explained in +# https://docs.docker.com/engine/reference/builder/#copy +COPY backend/ . +# Build +RUN CGO_ENABLED=0 GOOS=linux go build -o backend + + +FROM front-base AS runner +ARG BUILD_TAG +WORKDIR /app +RUN apk add --no-cache curl openssl +ENV NODE_ENV production + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nuxtjs + +# Only `.output` folder is needed from the build stage +COPY --from=front-builder --chown=nuxtjs:nodejs /app/.output/ ./ +COPY --from=backend-builder /app/backend /bin/backend +COPY 015.sh /app/015.sh + +# Change the port and host +ENV PORT=80 HOST=0.0.0.0 +ENV SITE_URL="http://localhost" SITE_TITLE="015" SITE_DESC="015 是一个开源的临时内容分享平台项目, 支持文件和文本上传, 下载, 分享" +ENV UPLOAD_PATH="/uploads" + +EXPOSE 80 + +CMD ["/bin/sh", "/app/015.sh"] \ No newline at end of file diff --git a/front/nuxt.config.ts b/front/nuxt.config.ts index 625ed83..963352d 100644 --- a/front/nuxt.config.ts +++ b/front/nuxt.config.ts @@ -29,10 +29,13 @@ export default defineNuxtConfig({ }, nitro: { routeRules: { - "/api/**": { proxy: "http://127.0.0.1:1323/**" }, + "/api/**": { + proxy: process.env.API_BASE_URL || "http://127.0.0.1:1323/**", + }, }, }, devServer: { - port: 5000, + port: parseInt(process.env.PORT || "5000"), + host: process.env.HOST || "0.0.0.0", }, });