make bucket accesible
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
Dockerfile
|
||||||
|
.dockerignore
|
||||||
|
.git
|
||||||
minio
|
minio
|
||||||
node_modules
|
node_modules
|
||||||
sqlite.db
|
sqlite.db
|
||||||
|
|||||||
@@ -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" ]
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user