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
node_modules
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 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=build /app/dist /app/dist
COPY --from=base /app/package.json /app/package.json
COPY --from=base /app/drizzle /app/drizzle
EXPOSE 3000
EXPOSE 3001
CMD [ "pnpm", "start" ]

View File

@@ -2,11 +2,10 @@ import { db } from "./src/db";
import { group, opinion, zone, province } from "./src/schema";
import { Groups, Opinions, Provinces, Districts } from "./initialData";
import { createBucket, createClient } from "./src/minio";
import { Config } from "./src/config";
async function main() {
let mc = createClient();
await createBucket(mc);
await setupBucket();
const isInitialized = await db.query.group
.findMany()
.then((groups) => groups.length > 0);
@@ -35,4 +34,22 @@ async function main() {
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();

View File

@@ -5,6 +5,8 @@ export const Config = {
token_duration: process.env.TOKEN_DURATION || "365d",
api_url: process.env.API_URL || "http://localhost:3000",
bucketName: process.env.BUCKET_NAME || "sorvor",
minioPublicBucketEndpoint:
process.env.MINIO_PUBLIC_BUCKET_ENDPOINT || "http://localhost:9000/sorvor",
minioEndpoint: process.env.MINIO_ENDPOINT || "localhost",
minioSSL: (process.env.MINIO_SSL && process.env.MINIO_SSL == "true") || false,
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 bearerToken = authorizationHeader.split(" ")[1];
console.log(authorizationHeader, bearerToken);
const phone = await verifyToken(bearerToken);
if (phone !== null) {
let user = await db.query.user.findFirst({

View File

@@ -265,7 +265,9 @@ async function requestChangeImage(
target: [imageToUser.userId],
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) {