feat: docker compose

This commit is contained in:
Innei
2021-09-23 16:21:36 +08:00
parent c5616d2b2f
commit 6e89b97ee6
5 changed files with 111 additions and 46 deletions

43
.dockerignore Normal file
View File

@@ -0,0 +1,43 @@
# compiled output
/dist
/node_modules
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# OS
.DS_Store
# Tests
/coverage
/.nyc_output
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
patch/dist
tmp
out
release.zip
run
data

2
.gitignore vendored
View File

@@ -39,3 +39,5 @@ out
release.zip
run
data

View File

@@ -1,22 +1,44 @@
version: '3.8'
services:
prod:
container_name: mx-space-server
image: mx-space-server:1.0.0
app:
container_name: mx-server
image: innei/mx-server:0.2.1
restart: 'unless-stopped'
build:
context: .
target: production
dockerfile: ./Dockerfile
command: npm run start:prod
args:
redis_host: 'redis'
db_host: 'mongo'
ports:
- 2333:2333
- '2333:2333'
depends_on:
- mongo
- redis
links:
- mongo
- redis
networks:
- nesjs-network
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
restart: unless-stopped
- app-network
mongo:
container_name: mongo
image: mongo
volumes:
- ./data:/data/db
ports:
- '3344:27017'
networks:
- app-network
redis:
image: redis
container_name: redis
ports:
- '3333:6379'
networks:
- app-network
networks:
nesjs-network:
app-network:
driver: bridge

View File

@@ -1,36 +1,34 @@
FROM node:16 as development
RUN npm i -g pnpm
WORKDIR /usr/src/app
COPY package.json ./
COPY pnpm-lock.yaml ./
RUN pnpm install glob rimraf
RUN pnpm install --only=development
FROM node:16 as builder
WORKDIR /app
COPY . .
RUN pnpm run build
FROM node:16 as production
RUN npm i -g pnpm
RUN pnpm install
RUN pnpm bundle
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
FROM node:16
ARG redis_host
ARG mongo_host
RUN apt update
RUN apt install zip unzip mongo-tools -y
WORKDIR /usr/src/app
WORKDIR /app
COPY --from=builder /app/out .
EXPOSE 2333
CMD node index.js --redis_host=redis --db_host=mongo
COPY package.json ./
COPY pnpm-lock.yaml ./
# FROM node:16-alpine as builder
# WORKDIR /app
# COPY . .
# RUN apk add libtool autoconf automake make g++ python2 python3 --no-cache
# RUN npm i -g pnpm
# RUN pnpm install
# RUN pnpm bundle
RUN pnpm install --only=production
RUN pnpm install pm2 --D
COPY . .
# FROM node:16-alpine
# RUN apk add zip unzip --no-cache
# RUN apk add mongodb-tools --no-cache
COPY --from=development /usr/src/app/dist ./dist
CMD ["pm2-prod", "ecosystem.config.js"]
# WORKDIR /app
# COPY --from=builder /app/out .
# EXPOSE 2333
# CMD ["node", "index.js"]

View File

@@ -21,9 +21,9 @@ export const CROSS_DOMAIN = {
export const MONGO_DB = {
collectionName: (argv.collection_name as string) || 'mx-space',
get uri() {
return `mongodb://127.0.0.1:${argv.dbport || '27017'}/${
process.env.TEST ? 'mx-space_unitest' : this.collectionName
}`
return `mongodb://${argv.db_host || '127.0.0.1'}:${
argv.db_port || '27017'
}/${process.env.TEST ? 'mx-space_unitest' : this.collectionName}`
},
}