mongodb 및 redis를 사용하는 응용 프로그램이 있습니다.
docker-compose에서 테스트를 실행하고 싶지만 테스트를 실행할 때마다 다음 오류가 발생합니다.
명령: docker-compose -p tests run --rm main npm run test
오류:
FAIL test/content/document/content.document.test.ts
● Test suite failed to run
Cannot find module 'request'
at node_modules/request-promise-native/lib/rp.js:8:12
at module.exports (node_modules/stealthy-require/lib/index.js:62:23)
at Object.<anonymous> (node_modules/request-promise-native/lib/rp.js:7:15)
설치를 시도 request
했지만 성공하지 못했습니다.
테스트는 docker-compose없이 성공적으로 로컬에서 실행됩니다.
docker-compose.yml :
version: '3.7'
services:
main:
build:
context: .
target: development
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 8080:8080
command: npm run start:dev
networks:
- webnet
depends_on:
- redis
- mongodb
redis:
container_name: redis
image: redis:5
networks:
- webnet
mongodb:
container_name: mongodb
environment:
- MONGO_INITDB_DATABASE=database
- MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password
image: mongo:4.2.6
restart: always
networks:
- webnet
ports:
- '27017:27017'
networks:
webnet:
Dockerfile :
# https://blog.logrocket.com/containerized-development-nestjs-docker/
FROM node:10.20.1-alpine3.11 As development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --only=development
COPY . .
RUN npm run build
FROM node:10.20.1-alpine3.11 as production
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /usr/src/app
ENV PORT=8080
COPY package*.json ./
RUN npm install --only=production
COPY . .
COPY --from=development /usr/src/app/dist ./dist
CMD ["node", "dist/main"]
package.json
{
"name": "jest-docker",
"version": "0.0.1",
"private": true,
"description": "",
"license": "MIT",
"author": "",
"main": "dist/main.js",
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"build:docker": "docker build -t paperbot .",
"deploy": "npm run build && gcloud app deploy --quiet",
"docker": "PORT=8080 docker-compose up --build --rm -V",
"start": "NODE_PATH=. npm run start:prod",
"start:dev": "PORT=8080 NODE_PATH=. nest start --watch",
"start:prod": "NODE_PATH=. node dist/main.js",
"test": "NODE_PATH=. ts-node ./dck",
"test:docker": "docker-compose -p tests run --rm main npm run test"
},
"dependencies": {
"@nestjs/bull": "^0.1.1",
"@nestjs/common": "^6.11.11",
"@nestjs/config": "^0.4.2",
"@nestjs/core": "^6.11.11",
"@nestjs/cqrs": "^7.0.0",
"@nestjs/platform-express": "^6.11.11",
"@slack/bolt": "^2.1.1",
"bull": "^3.14.0",
"class-transformer": "^0.2.3",
"class-validator": "^0.12.2",
"embedly": "^2.1.1",
"express": "^4.17.1",
"js-video-url-parser": "^0.4.1",
"mongodb": "^3.5.8",
"node-nlp": "^4.4.0",
"raw-body": "^2.4.1",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.5.5",
"tsscmp": "^1.0.6",
"unfluff": "^3.2.0"
},
"devDependencies": {
"@nestjs/cli": "^7.2.0",
"@nestjs/testing": "^6.11.11",
"@release-it/conventional-changelog": "^1.1.4",
"@testdeck/jest": "^0.1.0",
"@types/bull": "^3.13.0",
"@types/express": "^4.17.6",
"@types/jest": "^23.3.13",
"@types/mongodb": "^3.5.18",
"@types/node": "^10.17.24",
"@types/qs": "^6.9.3",
"@types/supertest": "^2.0.9",
"@types/tsscmp": "^1.0.0",
"@typescript-eslint/eslint-plugin": "^3.0.2",
"@typescript-eslint/parser": "^3.0.2",
"concurrently": "^4.1.2",
"dockest": "^2.0.2",
"eslint": "^7.1.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-json-format": "^2.0.1",
"eslint-plugin-prettier": "^3.1.3",
"jest": "^26.0.1",
"jest-sonar-reporter": "^2.0.0",
"prettier": "^1.19.1",
"release-it": "^13.6.1",
"rimraf": "^2.7.1",
"supertest": "^3.4.1",
"ts-jest": "^26.0.0",
"ts-node": "8.1.0",
"tsconfig-paths": "3.8.0",
"typescript": "^3.9.3"
},
"engines": {
"node": ">=10.0.0"
},
"jestSonar": {
"reportPath": "coverage",
"reportFile": "test-reporter.xml",
"indent": 2
}
}
Dockest로도 시도했지만 동일한 오류가 발생했습니다.
당신이 볼 수 있듯이, request
모듈뿐만 아니라 의존성의 일부가 아닌 devDependencies
, 실행하십시오
npm install request --production
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다