Imo Nestjs был взрывом, с которым можно играть, и действительно позволил мне построить быстрые прототипы, принудив меня, чтобы я сохранял доменную конструкцию и ценностную единицу. Я планирую использовать эту статью базовую линию для ссылки на другие статьи Nestjs, которые я буду строить в течение следующих нескольких недель.
предварительно требует
Генерировать проект JS
Generate Pestjs Project (мы назовем наш облачный Run)
гнездо нового облака
Обновите nestjs, чтобы уважать переменную среды портов
SRC/Main.ts.
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { Logger } from '@nestjs/common'; const logger = new Logger('APP'); async function bootstrap() { const app = await NestFactory.create(AppModule); const port = process.env.PORT || 3000; await app.listen(port, () => { logger.log(`⛱ server running on port ${port}`) }); } bootstrap();
вызывать NPM запустить начало: Dev
Чтобы увидеть приложение начать вызывать NPM Run Test: COV
Чтобы увидеть тестовый пробег устройства, и это сладкое покрытие кода 100%
-------------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | app.controller.ts | 100 | 100 | 100 | 100 | | app.service.ts | 100 | 100 | 100 | 100 | | -------------------|----------|----------|----------|----------|-------------------| Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 3.451s Ran all test suites.
вызывать NPM Run Test: E2E
чтобы увидеть, как набор E2E запустить
Облако построение
Теперь давайте сделаем некоторую конфигурацию, чтобы получить это, чтобы запустить на облаке
Мы создадим следующие файлы
- Dockerfile.
# use node 10 image FROM node:10 as base # set our working directory WORKDIR /app FROM base as development # copy over dependecy manifests to install COPY package*.json ./ # install production dependencies and copy them to a temp folder, we will use this for the final build step RUN npm install --production RUN cp -R node_modules /tmp/node_modules # Install all dependcies RUN npm install # Copy source code COPY . ./ # lint, unit test, e2e test and build our app FROM development as builder RUN npm run lint RUN npm run test:cov RUN npm run test:e2e RUN npm run build # release includes bare miniumum to run the app FROM base as release COPY --from=builder /tmp/node_modules ./node_modules COPY --from=builder /app/dist ./dist COPY --from=builder /app/package.json ./ # Run the web service on container boot CMD ["npm", "run", "start:prod"]
- .dockerignore.
coverage node_modules/ dist .idea .vscode
- Cloudbuild.yaml.
steps: # build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/$_SERVICE_NAME', '.'] # push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/$PROJECT_ID/$_SERVICE_NAME'] # Deploy container image to Cloud Run - name: 'gcr.io/cloud-builders/gcloud' args: - 'run' - 'deploy' - 'cloud-run' - '--image' - 'gcr.io/$PROJECT_ID/$_SERVICE_NAME' - '--region' - '$_REGION' - '--platform' - 'managed' - '--no-allow-unauthenticated' images: - 'gcr.io/$PROJECT_ID/$_SERVICE_NAME' substitutions: _SERVICE_NAME: "cloud-run" _REGION: "us-central1"
Регулировка учетной записи службы
- Войдите в GCP и перейдите в настроек Cloud Build и предоставьте облачную учетную запись службы Cloud Build Account Usc.
Trigger Build.
От вас типа командной строки GCloud Builds Отправить
и посмотреть постройку и автоматическое развертывание
Проверьте!
curl -H \ "Authorization: Bearer $(gcloud auth print-identity-token)" \ $(gcloud run services describe SERVICENAME --format 'value(status.url)')
Оригинал: «https://dev.to/amammay/nestjs-cloud-run-with-authentication-bare-bones-1eji»