Проблема с выводом консоли docker-compose

#node.js #docker #express #docker-compose #mocha.js

#node.js #docker #экспресс #docker-compose #mocha.js

Вопрос:

Проблема

Я запускаюсь docker-compose up во время разработки, поэтому мне просто нужно быстро взглянуть на терминал (используя встроенный терминал vs code), чтобы убедиться, что мои модульные тесты, задание lint и все остальное работает нормально.

То же самое, если я хочу console.log что-то в API, это просто появляется в терминале, и я могу выполнить отладку с его помощью.

Однако, начиная с сегодняшнего дня, вместо того, чтобы иметь журналы из всех контейнеров, у меня есть только журналы из контейнеров transpiler , kibana и apm-server .

Какую проблему я хочу исправить

Раньше я нажимал ctrl s для запуска контейнера linter и mocha (поскольку оба этих контейнера используют nodemon, поэтому изменение файлов приведет к их выводу), а также встраивал файлы typescripts в js (transpiler в режиме просмотра) и заставлял их выводить все на терминал.

Нет вывода из api , mocha nor linter , хотя я добавил некоторые console.log в код…

Я не делал никаких серьезных обновлений, просто переключил компьютер (оба являются Ubuntu Linux с установленным docker), и я не могу понять, как исправить эту проблему

файл docker-compose.yml

 version: "3.3"
services:

  api:
    container_name: api
    build: .
    env_file:
      - .env
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - 9000:9000
    restart: always
    depends_on:
      - mongo
      - elasticsearch
    command: sh -c "mkdir -p dist amp;amp; touch ./dist/app.js amp;amp; yarn run start"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/api/v1/ping"]
      interval: 1m30s
      timeout: 10s
      retries: 3

  transpiler:
    container_name: transpiler
    build: .
    restart: always
    volumes:
      - .:/app
      - /app/node_modules
    command: yarn run transpile -w

  linter:
    container_name: linter
    build: .
    restart: always
    volumes:
      - .:/app
      - /app/node_modules
    # https://github.com/yarnpkg/yarn/issues/5457 --silent not working
    command: nodemon --delay 500ms --exec yarn run lint

  mongo:
    container_name: mongo
    image: mongo:4.0
    restart: always
    ports:
      - 27017:27017
    command: mongod
    volumes:
      - ./db/mongodb:/data/db

  mongo_express:
    container_name: mongo_express
    restart: always
    image: mongo-express
    ports:
      - 8081:8081
    depends_on:
      - mongo
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8081"]
      interval: 2m30s
      timeout: 10s
      retries: 3

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
    container_name: elasticsearch
    restart: always
    volumes:
      - ./db/elasticsearch:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - discovery.type=single-node
    ports:
      - 9300:9300
      - 9200:9200
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9200"]
      interval: 1m30s
      timeout: 10s
      retries: 3

  kibana:
    container_name: kibana
    restart: always
    image: docker.elastic.co/kibana/kibana:6.6.0
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5601"]
      interval: 1m30s
      timeout: 10s
      retries: 3

  logstash:
    container_name: logstash
    restart: always
    image: docker.elastic.co/logstash/logstash:6.6.0
    ports:
      - 9600:9600
    environment:
      - KILL_ON_STOP_TIMEOUT=1
    volumes:
      - ./logstash/settings/:/usr/share/logstash/config/
      - ./logstash/pipeline/:/usr/share/logstash/pipeline/
    depends_on:
      - elasticsearch
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9600"]
      interval: 1m30s
      timeout: 10s
      retries: 3

  apm-server:
    container_name: apm_server
    restart: always
    image: docker.elastic.co/apm/apm-server:6.6.0
    ports:
      - 8200:8200
    volumes:
      - ./apm_settings/apm-server.yml:/usr/share/apm-server/apm-server.yml
    depends_on:
      - elasticsearch
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8200"]
      interval: 1m30s
      timeout: 10s
      retries: 3

  mocha:
    container_name: mocha
    restart: always
    build: .
    volumes:
      - .:/app
      - /app/node_modules
    command: nodemon --delay 500ms --exec yarn run test-coverage
    env_file:
      - .env
    environment:
      NODE_ENV: 'test'

volumes:
  esdata:
  

Dockerfile

 FROM mhart/alpine-node:10
ADD . /app
WORKDIR /app

RUN apk add --no-cache --virtual .gyp g   libtool make python curl amp;amp;
    yarn amp;amp;
    yarn global add nodemon amp;amp;
    apk del .gyp
  

Образец данных

Когда я запускаю docker-up, все выходные данные в порядке:

 mongo            | 2019-03-22T23:11:26.048 0000 I NETWORK  [conn6] end connection 172.22.0.8:52266 (3 connections now open)
apm_server       | 2019-03-22T23:11:26.048Z     INFO    [request]       beater/v2_handler.go:96 error handling request  {"request_id": "77b88109-c7c0-41a2-a28c-2343a82862bd", "method": "POST", "URL": "/intake/v2/events", "content_length": -1, "remote_address": "172.22.0.8", "user-agent": "elastic-apm-node/2.6.0 elastic-apm-http-client/7.1.1", "error": "unexpected EOF"}
api              | [nodemon] app crashed
api              | error Command failed with exit code 1.
api              | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
mocha            | 
mocha            | 
mocha            | Express server listening on port 9000, in test mode
mocha            |   GET PING ressource
mocha            |     GET /api/v1/ ping/
mongo            | 2019-03-22T23:11:27.951 0000 I NETWORK  [listener] connection accepted from 172.22.0.2:39956 #8 (4 connections now open)
mongo            | 2019-03-22T23:11:27.961 0000 I NETWORK  [conn8] received client metadata from 172.22.0.2:39956 conn8: { driver: { name: "nodejs", version: "3.1.13" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "4.20.7-042007-generic" }, platform: "Node.js v10.15.3, LE, mongodb-core: 3.1.11" }
mongo            | 2019-03-22T23:11:28.051 0000 I NETWORK  [listener] connection accepted from 172.22.0.2:39958 #9 (5 connections now open)
mongo            | 2019-03-22T23:11:28.197 0000 I NETWORK  [listener] connection accepted from 172.22.0.2:39962 #10 (6 connections now open)
mocha            |       ✓ ping api (154ms)
  

Да, я знаю, что в этих журналах отображаются некоторые ошибки, но моя главная забота — по-прежнему выводить их в терминале

но нажатие ctrl s просто показывает это: (это моя настоящая проблема) :

 [10:59:15 PM] File change detected. Starting incremental compilation...
transpiler       | 
transpiler       | [10:59:15 PM] Found 0 errors. Watching for file changes.
transpiler       | 
apm_server       | 2019-03-22T22:59:40.309Z     INFO    [request]       beater/common_handlers.go:272   handled request {"request_id": "5948c9ee-c6fd-42ad-bd1e-acc259e1634c", "method": "POST", "URL": "/intake/v2/events", "content_length": -1, "remote_address": "172.22.0.11", "user-agent": "elastic-apm-node/2.6.0 elastic-apm-http-client/7.1.1", "response_code": 202}
kibana           | {"type":"response","@timestamp":"2019-03-22T22:59:44Z","tags":[],"pid":1,"method":"get","statusCode":302,"req":{"url":"/","method":"get","headers":{"user-agent":"curl/7.29.0","host":"localhost:5601","accept":"*/*"},"remoteAddress":"127.0.0.1","userAgent":"127.0.0.1"},"res":{"statusCode":302,"responseTime":7,"contentLength":9},"message":"GET / 302 7ms - 9.0B"}
  

Что я пробовал (и не сработало)

  • удаление всех контейнеров
  • удаление всех контейнеров и их объема
  • удаление всех контейнеров и их объема, а также всего изображения
  • перезагрузка
  • восстановление ( docker-compose build ) после удаления всего
  • запустите docker-compose up cmd с простого терминала, чтобы убедиться, что это не проблема с интегрированным терминалом vs code
  • перезапуск службы docker ( sudo systemctl restart docker )

Комментарии:

1. Когда вы все перестроили, скорее всего, что-то изменилось где-то в пакете npm (возможно, зависимость, о существовании которой вы не знали), вы сказали, что переключили компьютеры, работает ли это по-прежнему, как ожидалось, на предыдущем компьютере и ОС

2. Не могу проверить на другом компьютере, это было на работе. Однако я сомневаюсь, что это происходит из пакета npm по двум причинам: во-первых, у меня есть yarn. блокировка файлов, и, во-вторых, я не объединил внесенную мной модификацию и попытался клонировать master и перезапустить с него, но та же проблема

3. Когда вы говорите, что разные компьютеры, но оба Linux … это одна и та же версия (Ubuntu? 16 18 ? Centos 6 7?

4. Обе Ubuntu, одна 16.04, а другая 18.04, но на самом деле вы были правы, я просто попробовал еще раз с yarn. блокировка с главного, и теперь все работает нормально. Думаю, я забыл выполнить сборку при клонировании из master, попытаюсь сузить, какой пакет вызвал проблему сейчас (теперь, когда я думаю об этом, я сделал yarn upgrade на работе, но не перестроил, так что проблема, вероятно, связана с этим повышением). Если вы хотите опубликовать ответ, я соглашусь, поскольку вы решили мою проблему 🙂

5. Потрясающе рад слышать, что вы нашли проблему 👍

Ответ №1:

Когда вы все перестраивали, скорее всего, где-то что-то изменилось в пакете npm (возможно, зависимость, о существовании которой вы не знали).

Кроме того, вы сказали, что переключили компьютеры, работает ли он по-прежнему, как ожидалось, на предыдущем компьютере и ОС?