unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at testPDSNotExplode 108 lines 2.3 kB view raw
1# Build stage 2FROM node:24-alpine AS build 3 4# include important binaries 5RUN apk add --no-cache perl curl tini bash ffmpeg exiv2 6 7# set working directory 8WORKDIR /app/packages/backend 9 10# copy package.json and package-lock.json 11COPY package.json /app 12COPY package-lock.json /app 13COPY packages/backend/package.json . 14 15# set node_env as production for the npm install command 16ENV NODE_ENV=production 17 18# install dependencies 19RUN npm install 20 21# copy the rest of the files 22COPY packages/backend . 23 24# create log folder early to prevent node err: cannot open logs/*.log 25RUN mkdir -p logs 26 27# read the build args and set the environment variables with them 28ARG ADMIN_USER 29ARG ADMIN_EMAIL 30ARG ADMIN_PASSWORD 31ARG JWT_SECRET 32ARG DOMAIN_NAME 33ARG CACHE_DOMAIN 34ARG MEDIA_DOMAIN 35 36ARG POSTGRES_PASSWORD 37ARG POSTGRES_USER 38ARG POSTGRES_DBNAME 39 40ARG SMTP_HOST 41ARG SMTP_USER 42ARG SMTP_PORT 43ARG SMTP_PASSWORD 44ARG SMTP_FROM 45 46ARG ENABLE_BSKY 47ARG PDS_DOMAIN_NAME 48ARG PDS_JWT_SECRET 49ARG PDS_ADMIN_PASSWORD 50 51ARG LOG_SQL_QUERIES 52ARG UPLOAD_LIMIT 53ARG POSTS_PER_PAGE 54ARG LOG_LEVEL 55ARG BLOCKLIST_URI 56ARG FRONTEND_PATH 57ARG DISABLE_REQUIRE_SEND_EMAIL 58ARG BLOCKED_IPS 59ARG REVIEW_REGISTRATIONS 60ARG IGNORE_BLOCK_HOSTS 61 62ARG USE_WORKERS 63ARG WORKERS_LOW 64ARG WORKERS_MEDIUM 65ARG WORKERS_HIGH 66 67ARG WEBPUSH_EMAIL 68ARG WEBPUSH_PRIVATE 69ARG WEBPUSH_PUBLIC 70ARG FRONTEND_LOGO 71ARG FRONTEND_API_URL 72ARG FRONTEND_MEDIA_URL 73ARG FRONTEND_CACHE_URL 74ARG FRONTEND_CACHE_BACKUP_URLS 75ARG FRONTEND_SHORTEN_POSTS 76ARG FRONTEND_DISABLE_PWA 77ARG FRONTEND_MAINTENANCE 78ARG FRONTEND_SHORT_TITLE 79ARG FRONTEND_LONG_TITLE 80ARG FRONTEND_DESCRIPTION 81 82# defaults assuming this is run in the docker compose package with the others 83ARG FRONTEND_FQDN_URL=https://${DOMAIN_NAME} 84ARG POSTGRES_HOST=db 85ARG POSTGRES_PORT=5432 86ARG REDIS_HOST=redis 87ARG REDIS_PORT=6379 88ARG LISTEN_IP=0.0.0.0 89ARG PORT=9000 90ARG LOG_DESTINATION=1 91 92 93COPY packages/backend/environment.example.ts environment.ts 94 95# use sed to replace the environment variables in the environment.ts file 96RUN perl -pi -e 's/\$\{\{([_A-Z]+):-(.*)\}\}/$ENV{$1}||$2/ge' environment.ts && \ 97 perl -pi -e 's/\$\{\{([_A-Z]+)\}\}/$ENV{$1}/g' environment.ts 98 99RUN npm run type-check 100 101# expose port from environment.ts 102EXPOSE ${PORT} 103 104# set up tini as entrypoint to be able to handle kernel signals 105ENTRYPOINT ["tini", "--"] 106 107# start the actual backend server 108CMD ["npm", "start"]