diff --git a/.docker/env b/.docker/env deleted file mode 100644 index 595b7ba2..00000000 --- a/.docker/env +++ /dev/null @@ -1 +0,0 @@ -MONGO_URL=mongodb://db:27017/fosscord?readPreference=secondaryPreferred diff --git a/.dockerignore b/.dockerignore index 61b7ef66..93d19905 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,5 @@ node_modules/ -db/ \ No newline at end of file +db/ +dist/ +coverage/ +*.db \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..72449f88 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +PRODUCTION=false + +DATABASE="postgres://fosscord:fosscord@db:5432/fosscord" + +STORAGE_PROVIDER=file +STORAGE_LOCATION=/data diff --git a/api/Dockerfile b/api/Dockerfile index 08d15f72..78256be6 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,12 +1,28 @@ FROM node:lts-alpine + # needed for native packages (bcrypt, canvas) -RUN apk add --no-cache make gcc g++ python cairo-dev jpeg-dev pango-dev giflib-dev -WORKDIR /usr/src/fosscord-server -COPY package.json . -COPY package-lock.json . -RUN npm rebuild bcrypt --build-from-source && npm install canvas --build-from-source +RUN apk add --no-cache \ + make \ + gcc \ + g++ \ + python \ + cairo-dev \ + jpeg-dev \ + pango-dev \ + giflib-dev + +WORKDIR /usr/src/fosscord-api + +RUN npm rebuild bcrypt --build-from-source \ + && npm install canvas --build-from-source + +COPY api/package.json api/package-lock.json ./ +COPY util ../util RUN npm install -COPY . . + +COPY api/ . + +RUN npm run build + EXPOSE 3001 -RUN npm run build-docker CMD ["node", "dist/start.js"] diff --git a/docker-compose.yml b/docker-compose.yml index 5861e12f..3dca75fb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,52 @@ +--- version: "3" + services: db: hostname: fosscord_db - image: mongo:latest + image: postgres:latest volumes: - - ./db:/data/db + - db_data:/var/lib/postgres restart: unless-stopped + ports: + - 5432:5432 + environment: + POSTGRES_USER: fosscord + POSTGRES_DATABASE: fosscord + POSTGRES_PASSWORD: fosscord + api: - hostname: fosscord_api - image: fosscord/api + build: + context: . + dockerfile: api/Dockerfile depends_on: - db ports: - 3001:3001 - env_file: ./.docker/env + env_file: .env + gateway: - hostname: fosscord_gateway - image: fosscord/gateway + build: + context: . + dockerfile: gateway/Dockerfile depends_on: - db ports: - 3002:3002 - env_file: ./.docker/env \ No newline at end of file + env_file: .env + + cdn: + build: + context: . + dockerfile: cdn/Dockerfile + depends_on: + - db + ports: + - 3003:3003 + volumes: + - cdn_data:/data + env_file: .env + +volumes: + db_data: {} + cdn_data: {}