make bucket accesible

This commit is contained in:
2024-04-20 15:45:10 +07:00
parent ee9963c3b6
commit d12777a747
6 changed files with 35 additions and 6 deletions

View File

@@ -1,3 +1,6 @@
Dockerfile
.dockerignore
.git
minio minio
node_modules node_modules
sqlite.db sqlite.db

View File

@@ -11,9 +11,15 @@ FROM base AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
RUN pnpm run build RUN pnpm run build
FROM base AS app FROM node:20-slim AS app
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app
COPY --from=prod-deps /app/node_modules /app/node_modules COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app/dist /app/dist COPY --from=build /app/dist /app/dist
COPY --from=base /app/package.json /app/package.json
COPY --from=base /app/drizzle /app/drizzle
EXPOSE 3000 EXPOSE 3000
EXPOSE 3001 EXPOSE 3001
CMD [ "pnpm", "start" ] CMD [ "pnpm", "start" ]

View File

@@ -2,11 +2,10 @@ import { db } from "./src/db";
import { group, opinion, zone, province } from "./src/schema"; import { group, opinion, zone, province } from "./src/schema";
import { Groups, Opinions, Provinces, Districts } from "./initialData"; import { Groups, Opinions, Provinces, Districts } from "./initialData";
import { createBucket, createClient } from "./src/minio"; import { createBucket, createClient } from "./src/minio";
import { Config } from "./src/config";
async function main() { async function main() {
let mc = createClient(); await setupBucket();
await createBucket(mc);
const isInitialized = await db.query.group const isInitialized = await db.query.group
.findMany() .findMany()
.then((groups) => groups.length > 0); .then((groups) => groups.length > 0);
@@ -35,4 +34,22 @@ async function main() {
console.log("Done"); console.log("Done");
} }
async function setupBucket() {
const BucketPolicy = {
Version: "2012-10-17",
Statement: [
{
Action: ["s3:GetObject"],
Effect: "Allow",
Principal: "*",
Resource: [`arn:aws:s3:::${Config.bucketName}/*`],
Sid: "AllowAnonymousAccess",
},
],
};
let mc = createClient();
await createBucket(mc);
await mc.setBucketPolicy(Config.bucketName, JSON.stringify(BucketPolicy));
}
main(); main();

View File

@@ -5,6 +5,8 @@ export const Config = {
token_duration: process.env.TOKEN_DURATION || "365d", token_duration: process.env.TOKEN_DURATION || "365d",
api_url: process.env.API_URL || "http://localhost:3000", api_url: process.env.API_URL || "http://localhost:3000",
bucketName: process.env.BUCKET_NAME || "sorvor", bucketName: process.env.BUCKET_NAME || "sorvor",
minioPublicBucketEndpoint:
process.env.MINIO_PUBLIC_BUCKET_ENDPOINT || "http://localhost:9000/sorvor",
minioEndpoint: process.env.MINIO_ENDPOINT || "localhost", minioEndpoint: process.env.MINIO_ENDPOINT || "localhost",
minioSSL: (process.env.MINIO_SSL && process.env.MINIO_SSL == "true") || false, minioSSL: (process.env.MINIO_SSL && process.env.MINIO_SSL == "true") || false,
minioPort: parseInt(process.env.MINIO_PORT || "9000"), minioPort: parseInt(process.env.MINIO_PORT || "9000"),

View File

@@ -40,7 +40,6 @@ export const createContext = async (opts: CreateHTTPContextOptions) => {
const authorizationHeader = opts.req.headers.authorization || ""; const authorizationHeader = opts.req.headers.authorization || "";
const bearerToken = authorizationHeader.split(" ")[1]; const bearerToken = authorizationHeader.split(" ")[1];
console.log(authorizationHeader, bearerToken);
const phone = await verifyToken(bearerToken); const phone = await verifyToken(bearerToken);
if (phone !== null) { if (phone !== null) {
let user = await db.query.user.findFirst({ let user = await db.query.user.findFirst({

View File

@@ -265,7 +265,9 @@ async function requestChangeImage(
target: [imageToUser.userId], target: [imageToUser.userId],
set: { imageName: objectName }, set: { imageName: objectName },
}); });
return await createUploadImageUrl(mc, objectName, contentType); let request = await createUploadImageUrl(mc, objectName, contentType);
request.postURL = Config.minioPublicBucketEndpoint;
return request;
} }
async function confirmChangeImage(userId: number, oldImage: string | null) { async function confirmChangeImage(userId: number, oldImage: string | null) {