Error encountered errors while bringing up the project

I'm trying to run apm integration testing on a local machine with macOS 11.4. I used these instructions to set up virtualenv: https://gist.github.com/pandafulmanda/730a9355e088a9970b18275cb9ead...

For some reason I see the ES container shutting down, but there aren’t any obvious errors in its log, not sure why it’s stopping:

docker ps --all

CONTAINER ID   IMAGE                                                  COMMAND                  CREATED             STATUS                         PORTS                      NAMES
43aacf6eca2a   docker.elastic.co/beats/elastic-agent:7.14.0           "/usr/bin/tini -- /u…"   About an hour ago   Exited (1) About an hour ago                              localtesting_7.14.0_elastic-agent
4fc930014da2   apm-integration-testing_apm-server                     "/apmpkg"                About an hour ago   Exited (1) 3 minutes ago                                  localtesting_7.14.0_apm-server-managed
ceae74f6234f   postgres:10                                            "docker-entrypoint.s…"   About an hour ago   Exited (0) 39 minutes ago                                 localtesting_7.14.0_postgres
ace604b064ab   redis:4                                                "docker-entrypoint.s…"   About an hour ago   Exited (0) 39 minutes ago                                 localtesting_7.14.0_redis
31ff405ee763   docker.elastic.co/kibana/kibana:7.14.0                 "/bin/tini -- /usr/l…"   About an hour ago   Up 38 minutes (unhealthy)      127.0.0.1:5601->5601/tcp   localtesting_7.14.0_kibana
1a436786542a   docker.elastic.co/elasticsearch/elasticsearch:7.14.0   "/bin/tini -- /usr/l…"   About an hour ago   Exited (137) 4 minutes ago                                localtesting_7.14.0_elasticsearch
docker logs -f 1a436786542a
...
{"type": "server", "timestamp": "2021-07-19T13:53:58,571Z", "level": "INFO", "component": "o.e.i.g.DatabaseRegistry", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "downloading geoip database [GeoLite2-Country.mmdb] to [/tmp/elasticsearch-3210457199444842828/geoip-databases/XIGAHHCYSLa5cEoQ2uSZFQ/GeoLite2-Country.mmdb.tmp.gz]", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:58,572Z", "level": "INFO", "component": "o.e.i.g.DatabaseRegistry", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "downloading geoip database [GeoLite2-ASN.mmdb] to [/tmp/elasticsearch-3210457199444842828/geoip-databases/XIGAHHCYSLa5cEoQ2uSZFQ/GeoLite2-ASN.mmdb.tmp.gz]", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:58,573Z", "level": "INFO", "component": "o.e.i.g.DatabaseRegistry", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "downloading geoip database [GeoLite2-City.mmdb] to [/tmp/elasticsearch-3210457199444842828/geoip-databases/XIGAHHCYSLa5cEoQ2uSZFQ/GeoLite2-City.mmdb.tmp.gz]", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:58,853Z", "level": "INFO", "component": "o.e.i.g.DatabaseRegistry", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "database file changed [/tmp/elasticsearch-3210457199444842828/geoip-databases/XIGAHHCYSLa5cEoQ2uSZFQ/GeoLite2-Country.mmdb], reload database...", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:58,950Z", "level": "INFO", "component": "o.e.i.g.DatabaseRegistry", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "database file changed [/tmp/elasticsearch-3210457199444842828/geoip-databases/XIGAHHCYSLa5cEoQ2uSZFQ/GeoLite2-ASN.mmdb], reload database...", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:59,300Z", "level": "INFO", "component": "o.e.i.g.GeoIpDownloader", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "geoip database [GeoLite2-ASN.mmdb] is up to date, updated timestamp", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:59,614Z", "level": "INFO", "component": "o.e.i.g.GeoIpDownloader", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "geoip database [GeoLite2-City.mmdb] is up to date, updated timestamp", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:59,616Z", "level": "INFO", "component": "o.e.c.r.a.AllocationService", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "Cluster health status changed from [RED] to [GREEN] (reason: [shards started [[.monitoring-es-7-2021.07.19][0]]]).", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:59,820Z", "level": "INFO", "component": "o.e.i.g.GeoIpDownloader", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "geoip database [GeoLite2-Country.mmdb] is up to date, updated timestamp", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
{"type": "server", "timestamp": "2021-07-19T13:53:59,905Z", "level": "INFO", "component": "o.e.i.g.DatabaseRegistry", "cluster.name": "docker-cluster", "node.name": "1a436786542a", "message": "database file changed [/tmp/elasticsearch-3210457199444842828/geoip-databases/XIGAHHCYSLa5cEoQ2uSZFQ/GeoLite2-City.mmdb], reload database...", "cluster.uuid": "utXHWfENRbaz01uA9KtJnA", "node.id": "XIGAHHCYSLa5cEoQ2uSZFQ"  }
docker logs -f 31ff405ee763
...
{"type":"response","@timestamp":"2021-07-19T13:57:49+00:00","tags":["api"],"pid":1207,"method":"get","statusCode":503,"req":{"url":"/api/status","method":"get","headers":{"host":"kibana:5601","user-agent":"curl/7.61.1","accept":"*/*"},"remoteAddress":"172.18.0.3","userAgent":"curl/7.61.1"},"res":{"statusCode":503,"responseTime":38,"contentLength":32094},"message":"GET /api/status 503 38ms - 31.3KB"}
{"type":"log","@timestamp":"2021-07-19T13:57:59+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"response","@timestamp":"2021-07-19T13:57:59+00:00","tags":["api"],"pid":1207,"method":"get","statusCode":503,"req":{"url":"/api/status","method":"get","headers":{"host":"kibana:5601","user-agent":"curl/7.61.1","accept":"*/*"},"remoteAddress":"172.18.0.3","userAgent":"curl/7.61.1"},"res":{"statusCode":503,"responseTime":35,"contentLength":32089},"message":"GET /api/status 503 35ms - 31.3KB"}
{"type":"log","@timestamp":"2021-07-19T13:58:09+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"response","@timestamp":"2021-07-19T13:58:09+00:00","tags":["api"],"pid":1207,"method":"get","statusCode":503,"req":{"url":"/api/status","method":"get","headers":{"host":"kibana:5601","user-agent":"curl/7.61.1","accept":"*/*"},"remoteAddress":"172.18.0.3","userAgent":"curl/7.61.1"},"res":{"statusCode":503,"responseTime":36,"contentLength":32088},"message":"GET /api/status 503 36ms - 31.3KB"}
{"type":"log","@timestamp":"2021-07-19T13:58:18+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"log","@timestamp":"2021-07-19T13:58:18+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"log","@timestamp":"2021-07-19T13:58:19+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"response","@timestamp":"2021-07-19T13:58:19+00:00","tags":["api"],"pid":1207,"method":"get","statusCode":503,"req":{"url":"/api/status","method":"get","headers":{"host":"kibana:5601","user-agent":"curl/7.61.1","accept":"*/*"},"remoteAddress":"172.18.0.3","userAgent":"curl/7.61.1"},"res":{"statusCode":503,"responseTime":35,"contentLength":32087},"message":"GET /api/status 503 35ms - 31.3KB"}
{"type":"log","@timestamp":"2021-07-19T13:58:29+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"response","@timestamp":"2021-07-19T13:58:29+00:00","tags":["api"],"pid":1207,"method":"get","statusCode":503,"req":{"url":"/api/status","method":"get","headers":{"host":"kibana:5601","user-agent":"curl/7.61.1","accept":"*/*"},"remoteAddress":"172.18.0.3","userAgent":"curl/7.61.1"},"res":{"statusCode":503,"responseTime":35,"contentLength":32085},"message":"GET /api/status 503 35ms - 31.3KB"}
{"type":"log","@timestamp":"2021-07-19T13:58:39+00:00","tags":["warning","plugins","licensing"],"pid":1207,"message":"License information could not be obtained from Elasticsearch due to ConnectionError: getaddrinfo ENOTFOUND elasticsearch error"}
{"type":"response","@timestamp":"2021-07-19T13:58:39+00:00","tags":["api"],"pid":1207,"method":"get","statusCode":503,"req":{"url":"/api/status","method":"get","headers":{"host":"kibana:5601","user-agent":"curl/7.61.1","accept":"*/*"},"remoteAddress":"172.18.0.3","userAgent":"curl/7.61.1"},"res":{"statusCode":503,"responseTime":37,"contentLength":32089},"message":"GET /api/status 503 37ms - 31.3KB"}

На чтение 6 мин Опубликовано 13.09.2020

Это руководство поможет исправить ошибку:

container is marked for removal and cannot be started

которая была вызвана:

driver "overlay" failed to remove root filesystem for ...: remove /var/lib/docker/overlay/.../merged: device or resource busy.

Я попытался остановить и запустить кастомную службу systemd:

$ sudo systemctl stop docker-compose-grafana.service
$ sudo systemctl start docker-compose-grafana.service

Не получилось …

$ sudo systemctl status docker-compose-grafana.service
● docker-compose-grafana.service - Grafana
   Loaded: loaded (/etc/systemd/system/docker-compose-grafana.service; disabled; vendor preset: disabled)
   Active: deactivating (stop-post) (Result: exit-code) since sun 2020-03-01 09:08:33 CET; 1s ago
  Process: 19459 ExecStop=/usr/bin/env docker-compose stop (code=exited, status=0/SUCCESS)
  Process: 19378 ExecStart=/usr/bin/env docker-compose up (code=exited, status=1/FAILURE)
 Main PID: 19378 (code=exited, status=1/FAILURE);         : 19472 (docker-compose)
   Memory: 17.3M
   CGroup: /system.slice/docker-compose-grafana.service
           └─control
             └─19472 /usr/bin/python2 /usr/bin/docker-compose down

mar 01 02:08:33 analytics systemd[1]: Starting Grafana...
mar 01 02:08:33 analytics env[19378]: Creating network "grafanaanalytics_default" with the default driver
mar 01 02:08:33 analytics env[19378]: Starting grafana_analytics ...
mar 01 02:08:33 analytics env[19378]: Starting grafana_analytics
mar 01 02:08:33 analytics env[19378]: [45B blob data]
mar 01 02:08:33 analytics env[19378]: ERROR: for grafana_analytics  Cannot start service grafana: container is marked for removal and cannot be started
mar 01 02:08:33 analytics env[19378]: ERROR: for grafana  Cannot start service grafana: container is marked for removal and cannot be started
mar 01 02:08:33 analytics env[19378]: Encountered errors while bringing up the project.
mar 01 02:08:33 analytics systemd[1]: docker-compose-grafana.service: main process exited, code=exited, status=1/FAILURE
mar 01 02:08:34 analytics env[19472]: Removing grafana_analytics ...

Служба подает:

$ sudo systemctl status  docker-compose-grafana.service
● docker-compose-grafana.service - Grafana
   Loaded: loaded (/etc/systemd/system/docker-compose-grafana.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

mar 01 02:08:33 analytics env[19378]: ERROR: for grafana  Cannot start service grafana: container is marked for removal and cannot be started
mar 01 02:08:33 analytics env[19378]: Encountered errors while bringing up the project.
mar 01 02:08:33 analytics systemd[1]: docker-compose-grafana.service: main process exited, code=exited, status=1/FAILURE
mar 01 02:08:34 analytics env[19472]: Removing grafana_analytics ...
mar 01 02:08:35 analytics env[19472]: [45B blob data]
mar 01 02:08:35 analytics env[19472]: ERROR: for grafana_analytics  driver "overlay" failed to remove root filesystem for 6752b12b582b80166e31510c6947bb337ed19de689122598574f75a2aa9efbb1: remo... resource busy
mar 01 02:08:35 analytics env[19472]: Removing network grafanaanalytics_default
mar 01 02:08:35 analytics systemd[1]: Unit docker-compose-grafana.service entered failed state.
mar 01 02:08:35 analytics systemd[1]: docker-compose-grafana.service failed.
mar 01 02:08:48 analytics systemd[1]: Stopped Grafana.
Hint: Some lines were ellipsized, use -l to show in full.

Как и ожидалось, ту же ошибку можно увидеть при прямом использовании docker-compose.

$ docker-compose down
Removing grafana_analytics ... error

ERROR: for grafana_analytics  driver "overlay" failed to remove root filesystem for 6752b12b582b80166e31510c6947bb337ed19de689122598574f75a2aa9efbb1: remove /var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged: device or resource busy
Removing network grafanaanalytics_default
WARNING: Network grafanaanalytics_default not found.
$ docker-compose up -d
Creating network "grafanaanalytics_default" with the default driver
Starting grafana_analytics ...
Starting grafana_analytics ... error

ERROR: for grafana_analytics  Cannot start service grafana: container is marked for removal and cannot be started

ERROR: for grafana  Cannot start service grafana: container is marked for removal and cannot be started
ERROR: Encountered errors while bringing up the project.
$ docker-compose ps
    Name       Command   State    Ports
---------------------------------------
grafana_analytics   /run.sh   Exit 1
$ docker-compose rm -f
Going to remove grafana_analytics
Removing grafana_analytics ... error

ERROR: for grafana_analytics  driver "overlay" failed to remove root filesystem for 6752b12b582b80166e31510c6947bb337ed19de689122598574f75a2aa9efbb1: remove /var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged: device or resource busy

Я попытался перезапустить службу Docker

$ sudo systemctl restart docker.service

Опять не сработало:

 /var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged/
rm: cannot remove '/var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged/': Device or resource busy

Я проверил процесс:

$ grep 489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26 /proc/*/mountinfo
/proc/18295/mountinfo:340 233 0:74 / /var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged rw,relatime shared:157 - overlay overlay rw,lowerdir=/var/lib/docker/overlay/df$975bec0c7cb27e9770e30d574a23aff530f6e331f064bb4faf025aa91a4cc/root,upperdir=/var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/upper,workdir=/var/lib/docker/overlay/c489302a4$ea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/work
/proc/19019/mountinfo:340 233 0:74 / /var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged rw,relatime shared:157 - overlay overlay rw,lowerdir=/var/lib/docker/overlay/df$975bec0c7cb27e9770e30d574a23aff530f6e331f064bb4faf025aa91a4cc/root,upperdir=/var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/upper,workdir=/var/lib/docker/overlay/c489302a4$ea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/work
/proc/19020/mountinfo:340 233 0:74 / /var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/merged rw,relatime shared:157 - overlay overlay rw,lowerdir=/var/lib/docker/overlay/df$975bec0c7cb27e9770e30d574a23aff530f6e331f064bb4faf025aa91a4cc/root,upperdir=/var/lib/docker/overlay/c489302a4bea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/upper,workdir=/var/lib/docker/overlay/c489302a4$ea143469f8c29915354ee505903bae2a3fee6fd40a890b8cdb9d26/work

Это был nginx на хосте

$ ps -p 18295 19019 19020
    PID TTY      STAT   TIME COMMAND
  18295 ?        Ss     0:00 nginx: master process /usr/sbin/nginx
  19019 ?        S<     0:19 nginx: worker process
  19020 ?        S<     0:16 nginx: worker process

Я перезапустил nginx, чтобы освободить пространство имен монтирования процесса.

$ sudo systemctl restart nginx

Теперь я могу без проблем запускать сервис.

$ docker-compose rm
Going to remove grafana_analytics
Are you sure? [yN] y
Removing grafana_analytics ... done
$ sudo systemctl start docker-compose-grafana.service

Пожалуйста, не спамьте и никого не оскорбляйте.

Это поле для комментариев, а не спамбокс.

Рекламные ссылки не индексируются!

Error running docker compose file:

ERROR: for yingxue_mysql_1  Cannot create container for service mysql: invalid volume specification: 'yingxue_data:var/lib/mysql:rw': invalid mount config for type "volume": invalid mount path: 'var/lib/mysql' mount path must be absolute

ERROR: for mysql  Cannot create container for service mysql: invalid volume specification: 'yingxue_data:var/lib/mysql:rw': invalid mount config for type "volume": invalid mount path: 'var/lib/mysql' mount path must be absolute
ERROR: Encountered errors while bringing up the project.

Docker compose original file

version: "3.3"

networks:
  yingxue_network:

volumes: 
  data:

services:
  nacos:
    image: nacos/nacos-server:2.0.2
    ports:
      - "8848:8848"
    environment:
      - "JVM_XMS=256m"
      - "JVM_XMX=256m"
      - "MODE=standalone"
    networks:
      - yingxue_network

  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    networks:
      - yingxue_network
    volumes:
      - data:var/lib/mysql
      - ./yingxue.sql:/docker-entrypoint-initdb.d/yingxue.sql
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "MYSQL_DATABASE=yingxue"

The problem description shows that the path is wrong. After careful inspection, it is found that the data volume data: var/lib/MySQL is missing /, which should be:

    volumes:
      - data:/var/lib/mysql
      - ./yingxue.sql:/docker-entrypoint-initdb.d/yingxue.sql

Read More:

Почему проверка работоспособности моего контейнера монго, составленная докером, всегда терпит неудачу?

Я использую docker-compose для запуска приложения Express/React/Mongo. В настоящее время я могу встать на все, используя логику повторных попыток в экспресс-приложении. Однако я бы предпочел использовать проверка здоровья Docker, чтобы предотвратить появление строки ошибок при первоначальном запуске контейнеров. Однако, когда я добавляю healthcheck в свой docker-compose.yml, он зависает на время интервала/повторения и завершается с:

ERROR: for collector  Container "70e7aae49c64" is unhealthy.

ERROR: for server  Container "70e7aae49c64" is unhealthy.
ERROR: Encountered errors while bringing up the project.

Кажется, моя проверка здоровья никогда не возвращает статус работоспособности, и я не совсем понимаю, почему. Весь мой docker-compose.yml:

version: "2.1"
services:
  mongo:
    image: mongo
    volumes:
      - ./data/mongodb/db:/data/db
    ports:
      - "${DB_PORT}:${DB_PORT}"
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo mongo:27017/test --quiet 1
      interval: 10s
      timeout: 10s
      retries: 5
  collector:
    build: ./collector/
    environment:
      - DB_HOST=${DB_HOST}
      - DB_PORT=${DB_PORT}
      - DB_NAME=${DB_NAME}
    volumes:
      - ./collector/:/app
    depends_on:
      mongo:
        condition: service_healthy
  server:
    build: .
    environment:
      - SERVER_PORT=$SERVER_PORT
    volumes:
      - ./server/:/app
    ports:
      - "${SERVER_PORT}:${SERVER_PORT}"
    depends_on:
      mongo:
        condition: service_healthy

Для test я также пробовал:

["CMD", "nc", "-z", "localhost", "27017"] 

И:

["CMD", "bash", "/mongo-healthcheck"]

Я также пытался полностью отказаться от healthcheck, следуя совету этот парень. Все в порядке, но я получаю ужасные ошибки в выводе перед успешным подключением:

collector_1  | MongoDB connection error: MongoNetworkError: failed to connect to server [mongo:27017] on first connect [MongoNetworkError: connect 
ECONNREFUSED 172.21.0.2:27017]
collector_1  | MongoDB connection with retry
collector_1  | MongoDB connection error: MongoNetworkError: failed to connect to server [mongo:27017] on first connect

Конечной целью является чистый вывод при запуске docker-compose up —build. Я также изучил некоторые решения в этот вопрос, но мне также не повезло с wait-for-it. Каков правильный способ дождаться запуска и работы Mongo перед запуском других контейнеров и добиться чистого запуска?


Ответы
4

Во-первых, я бы посоветовал обновить версию файла docker-compose.yaml как минимум до 3.4 (version: «3.5»), а затем добавить параметр start_period в свой mongo healthcheck.

Note: start_period is only supported for v3.4 and higher of the compose file format.
start period provides initialization time for containers that need time to bootstrap. Probe failure during that period will not be counted towards the maximum number of retries. However, if a health check succeeds during the start period, the container is considered started and all consecutive failures will be counted towards the maximum number of retries.

Таким образом, это будет выглядеть примерно так:

healthcheck:
  test: echo 'db.runCommand("ping").ok' | mongo mongo:27017/test --quiet
  interval: 10s
  timeout: 10s
  retries: 5
  start_period: 40s

Когда я выполняю команду echo db.runCommand(«ping»).ok’ | mongo localhost:27017/test —quiet 1 в док-контейнере, результат такой:

    2019-04-19T02:39:19.770+0000 E -        [main] file [1] doesn't exist
    failed to load: 1

Попробуй это

healthcheck:
  test: bash -c "if mongo --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'; then exit 0; fi; exit 1;"

Я нашел решение здесь
https://github.com/docker-library/healthcheck/tree/master/mongo

Обратите внимание, это объясняет, почему проверка работоспособности не включена в официальное изображение.
https://github.com/docker-library/cassandra/pull/76#issuecomment-246054271

Проверка работоспособности докеров

#!/bin/bash
set -eo pipefail

if mongo --quiet "localhost/test" --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'; then
    exit 0
fi

exit 1

В примере по ссылке используется переменная хозяин

host = "$(hostname --ip-address || echo '127.0.0.1')"

if mongo --quiet "$host/test" --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'; then
# continues the same code

У меня это не сработало, поэтому я заменил хозяин на локальный хост.

В docker-compose

mongo:
  build:
    context: "./mongodb"
    dockerfile: Dockerfile
  container_name: crm-mongo
  restart: always
  healthcheck:
    test:  ["CMD", "docker-healthcheck"]
    interval: 10s
    timeout: 2s
    retries: 10

Кроме того, вы можете выполнять проверки работоспособности в контейнере. Измените Докерфайл или что-то подобное.

FROM mongo:4

ADD docker-healthcheck /usr/local/bin/

Мы можем использовать команду MongoDB Состояние сервера для проверки работоспособности, как указано в документе MongoDB:

Monitoring applications can run this command at a regular interval to collect statistics about the instance.

Поскольку эта команда serverStatus требует аутентификации, вам необходимо настроить проверку работоспособности, аналогичную конфигурации, показанной ниже:

version: '3.4'

services:
  mongo:
    image: mongo
    restart: always
    healthcheck:
      test: echo 'db.runCommand({serverStatus:1}).ok' | mongo admin -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --quiet | grep 1
      interval: 10s
      timeout: 10s
      retries: 3
      start_period: 20s
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

Вот и все. Если ваш экземпляр MongoDB исправен, вы увидите что-то похожее на мое:

$ docker ps
CONTAINER ID  IMAGE  COMMAND                 CREATED         STATUS                   PORTS      NAMES
01ed0e02aa70  mongo  "docker-entrypoint.s…"  11 minutes ago  Up 11 minutes (healthy)  27017/tcp  demo_mongo_1

Другие вопросы по теме

Trying to run docker-compose from Jenkins to build my project. I’m getting this error:

ERROR: for app  no such image: sha256:139041e4c8264d894497f3b0294d6efde66ed9d08b9f10741cd7876fed9e4e87: No such image: sha256:139041e4c8264d894497f3b0294d6efde66ed9d08b9f10741cd7876fed9e4e87
Encountered errors while bringing up the project.

When I test this as Root directly from my host it works perfectly but when I run the same exact thing as Jenkins I get this error. Please see my test case:

  • Testing as Root: You can see with root@jenkins2 it goes off without a hitch and on line #91 the «app» container is running successfully, which is the part I’m struggling with on Jenkins. However…

  • Testing as Jenkins: You can see with jenkins@jenkins2, after clearing out my docker assets, I end up getting the «Encountered errors while bringing up the project» error and by line #200/201 my «app» image is not running (btw feel free to ignore the hiccup I had to work around for lines #65-122 — although if you could clue me in as to why I ran into that with jenkins but not root that would be an amazing bonus).

MUCH APPRECIATE THE HELP!

#1 25.06.2018 19:01:24

Ошибка запуска приложение через docker

Привет,
Надо запустить приложение через docker

Установил docker, docker-composer:

$ docker --version
Docker version 17.12.1-ce, build 7390fc6 

При запуске в каталоге приложениея получаю:

$ sudo docker-compose up -d
[sudo] password for serge: 
Starting ukfxpages ... error

ERROR: for ukfxpages  Cannot start service landing_pages_er: driver failed programming external connectivity on endpoint ukfxpages (3317cadd42cb0d46291280e9b848c1f9dc3dd22b0dce5bbb458e68b0c8f61cb7): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

ERROR: for landing_pages_er  Cannot start service landing_pages_er: driver failed programming external connectivity on endpoint ukfxpages (3317cadd42cb0d46291280e9b848c1f9dc3dd22b0dce5bbb458e68b0c8f61cb7): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
ERROR: Encountered errors while bringing up the project.

Как это побороть  и как запустить приложение?

Спасибо !

#2 26.06.2018 10:25:17

Re: Ошибка запуска приложение через docker

пытаюсь установить docker как писано тут http://larapost.blogspot.com/2016/08/la … ocker.html

$ docker --version
Docker version 17.12.1-ce, build 7390fc6
$ docker-compose --version 
docker-compose version 1.21.2, build a133471

Если я правилно понял то сначала нужно запустить домен командой

$  docker ps 
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/json: dial unix /var/run/docker.sock: connect: permission denied
$ sudo -s
[sudo] password for serge: 
root@serge:#  docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Причем

нужно запускать под рутом  ?

Запускаю далее в другой консоле(не под рутом) и получаю ошибку

$ docker-compose up -d                                                                                                                          
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?                                                                                                                                                                                                                                                                                                                                                                                                      
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.   

Погуглив я нашел статью https://github.com/docker/compose/issues/1214 выполняю под рутом:

usermod -aG docker ${USER}
groups $USER
sudo chown -R $USER .

выполнил:

Та же ошибка

$ sudo systemctl status docker.service -l 
[sudo] password for serge:                                                                                                                                                                                                                   
● docker.service - Docker Application Container Engine                                                                                                                                                                                       
   Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)                                                                                                                                                     
   Active: active (running) since Tue 2018-06-26 09:59:19 EEST; 4min 48s ago                                                                                                                                                                 
     Docs: [url]https://docs.docker.com[/url]                                                                                                                                                                                                           
 Main PID: 7413 (dockerd)                                                                                                                                                                                                                    
    Tasks: 34                                                                                                                                                                                                                                
   CGroup: /system.slice/docker.service                                                                                                                                                                                                      
           ├─7413 /usr/bin/dockerd -H fd://                                                                                                                                                                                                  
           └─7437 docker-containerd --config /var/run/docker/containerd/containerd.toml                                                                                                                                                      
                                                                                                                                                                                                                                             
чер 26 09:59:18 serge dockerd[7413]: time="2018-06-26T09:59:18.889976331+03:00" level=warning msg="Your kernel does not support swap memory limit"                                                                                           
чер 26 09:59:18 serge dockerd[7413]: time="2018-06-26T09:59:18.890032001+03:00" level=warning msg="Your kernel does not support cgroup rt period"                                                                                            
чер 26 09:59:18 serge dockerd[7413]: time="2018-06-26T09:59:18.890042925+03:00" level=warning msg="Your kernel does not support cgroup rt runtime"                                                                                           
чер 26 09:59:18 serge dockerd[7413]: time="2018-06-26T09:59:18.890698976+03:00" level=info msg="Loading containers: start."                                                                                                                  
чер 26 09:59:19 serge dockerd[7413]: time="2018-06-26T09:59:19.319000781+03:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"        
чер 26 09:59:19 serge dockerd[7413]: time="2018-06-26T09:59:19.481057634+03:00" level=info msg="Loading containers: done."
чер 26 09:59:19 serge dockerd[7413]: time="2018-06-26T09:59:19.549868439+03:00" level=info msg="Docker daemon" commit=7390fc6 graphdriver(s)=overlay2 version=17.12.1-ce
чер 26 09:59:19 serge dockerd[7413]: time="2018-06-26T09:59:19.549934363+03:00" level=info msg="Daemon has completed initialization"
чер 26 09:59:19 serge dockerd[7413]: time="2018-06-26T09:59:19.555499683+03:00" level=info msg="API listen on /var/run/docker.sock"
чер 26 09:59:19 serge systemd[1]: Started Docker Application Container Engine.

И я приплыл…

В ссылке выше я нашел совет :

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

u should check if current login user belongs to /var/run/docker.sock user group docker.
Try run Compose as sudo.

Не понял какую команду нужно выполнить под рутом ?

#3 26.06.2018 10:46:56

Re: Ошибка запуска приложение через docker

Нашел видео в котором docker-compose up -d запускается под рутом(что кажется
нелогичным — как я понял эта команда должна применяться к каждому проекту который я хочу запустить локально ?)

root@serge:/mnt/docker_test/dockerApp# docker-compose up -d
Building app
Step 1/3 : FROM php:7-fpm
 ---> 854ffd8dc9d8
Step 2/3 : RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client         && docker-php-ext-install mcrypt pdo_mysql
 ---> Running in ce6d75efad2c
Get:1 [url]http://security.debian.org/debian-security[/url] stretch/updates InRelease [94.3 kB]
Ign:2 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch InRelease
Get:3 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch-updates InRelease [91.0 kB]
Get:5 [url]http://security.debian.org/debian-security[/url] stretch/updates/main amd64 Packages [450 kB]
Get:4 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch Release [118 kB]
Get:6 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch-updates/main amd64 Packages [12.1 kB]
Get:7 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch Release.gpg [2434 B]
Get:8 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 Packages [9530 kB]
Fetched 10.3 MB in 3s (3042 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  default-mysql-client libaio1 libdbd-mysql-perl libdbi-perl libjemalloc1
  libmariadbclient18 libmcrypt4 libreadline5 libterm-readkey-perl
  mariadb-client-10.1 mariadb-client-core-10.1 mariadb-common mysql-common
  readline-common
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl mcrypt
  readline-doc
The following NEW packages will be installed:
  default-mysql-client libaio1 libdbd-mysql-perl libdbi-perl libjemalloc1
  libmariadbclient18 libmcrypt-dev libmcrypt4 libreadline5
  libterm-readkey-perl mariadb-client-10.1 mariadb-client-core-10.1
  mariadb-common mysql-client mysql-common readline-common
0 upgraded, 16 newly installed, 0 to remove and 7 not upgraded.
Need to get 13.1 MB of archives.
After this operation, 79.8 MB of additional disk space will be used.
Get:1 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 readline-common all 7.0-3 [70.4 kB]
Get:2 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 mysql-common all 5.8+1.0.2 [5608 B]
Get:3 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 mariadb-common all 10.1.26-0+deb9u1 [27.3 kB]
Get:4 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libaio1 amd64 0.3.110-3 [9412 B]
Get:5 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libreadline5 amd64 5.2+dfsg-3+b1 [119 kB]
Get:6 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 mariadb-client-core-10.1 amd64 10.1.26-0+deb9u1 [5042 kB]
Get:7 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libjemalloc1 amd64 3.6.0-9.1 [89.8 kB]
Get:8 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 mariadb-client-10.1 amd64 10.1.26-0+deb9u1 [5841 kB]
Get:9 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 default-mysql-client all 1.0.2 [3050 B]
Get:10 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libdbi-perl amd64 1.636-1+b1 [766 kB]
Get:11 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB]
Get:12 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libdbd-mysql-perl amd64 4.041-2 [114 kB]
Get:13 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libmcrypt4 amd64 2.5.8-3.3 [71.2 kB]
Get:14 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libmcrypt-dev amd64 2.5.8-3.3 [92.9 kB]
Get:15 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 libterm-readkey-perl amd64 2.37-1 [27.2 kB]
Get:16 [url]http://cdn-fastly.deb.debian.org/debian[/url] stretch/main amd64 mysql-client amd64 5.5.9999+default [1698 B]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 13.1 MB in 2s (5851 kB/s)
Selecting previously unselected package readline-common.
(Reading database ... 12273 files and directories currently installed.)
Preparing to unpack .../00-readline-common_7.0-3_all.deb ...
Unpacking readline-common (7.0-3) ...
Selecting previously unselected package mysql-common.
Preparing to unpack .../01-mysql-common_5.8+1.0.2_all.deb ...
Unpacking mysql-common (5.8+1.0.2) ...
Selecting previously unselected package mariadb-common.
Preparing to unpack .../02-mariadb-common_10.1.26-0+deb9u1_all.deb ...
Unpacking mariadb-common (10.1.26-0+deb9u1) ...
Selecting previously unselected package libaio1:amd64.
Preparing to unpack .../03-libaio1_0.3.110-3_amd64.deb ...
Unpacking libaio1:amd64 (0.3.110-3) ...
Selecting previously unselected package libreadline5:amd64.
Preparing to unpack .../04-libreadline5_5.2+dfsg-3+b1_amd64.deb ...
Unpacking libreadline5:amd64 (5.2+dfsg-3+b1) ...
Selecting previously unselected package mariadb-client-core-10.1.
Preparing to unpack .../05-mariadb-client-core-10.1_10.1.26-0+deb9u1_amd64.deb ...
Unpacking mariadb-client-core-10.1 (10.1.26-0+deb9u1) ...
Selecting previously unselected package libjemalloc1.
Preparing to unpack .../06-libjemalloc1_3.6.0-9.1_amd64.deb ...
Unpacking libjemalloc1 (3.6.0-9.1) ...
Selecting previously unselected package mariadb-client-10.1.
Preparing to unpack .../07-mariadb-client-10.1_10.1.26-0+deb9u1_amd64.deb ...
Unpacking mariadb-client-10.1 (10.1.26-0+deb9u1) ...
Selecting previously unselected package default-mysql-client.
Preparing to unpack .../08-default-mysql-client_1.0.2_all.deb ...
Unpacking default-mysql-client (1.0.2) ...
Selecting previously unselected package libdbi-perl.
Preparing to unpack .../09-libdbi-perl_1.636-1+b1_amd64.deb ...
Unpacking libdbi-perl (1.636-1+b1) ...
Selecting previously unselected package libmariadbclient18:amd64.
Preparing to unpack .../10-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ...
Unpacking libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...
Selecting previously unselected package libdbd-mysql-perl.
Preparing to unpack .../11-libdbd-mysql-perl_4.041-2_amd64.deb ...
Unpacking libdbd-mysql-perl (4.041-2) ...
Selecting previously unselected package libmcrypt4.
Preparing to unpack .../12-libmcrypt4_2.5.8-3.3_amd64.deb ...
Unpacking libmcrypt4 (2.5.8-3.3) ...
Selecting previously unselected package libmcrypt-dev.
Preparing to unpack .../13-libmcrypt-dev_2.5.8-3.3_amd64.deb ...
Unpacking libmcrypt-dev (2.5.8-3.3) ...
Selecting previously unselected package libterm-readkey-perl.
Preparing to unpack .../14-libterm-readkey-perl_2.37-1_amd64.deb ...
Unpacking libterm-readkey-perl (2.37-1) ...
Selecting previously unselected package mysql-client.
Preparing to unpack .../15-mysql-client_5.5.9999+default_amd64.deb ...
Unpacking mysql-client (5.5.9999+default) ...
Setting up readline-common (7.0-3) ...
Setting up libjemalloc1 (3.6.0-9.1) ...
Setting up mysql-common (5.8+1.0.2) ...
update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Setting up libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...
Setting up libterm-readkey-perl (2.37-1) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Setting up libaio1:amd64 (0.3.110-3) ...
Setting up libreadline5:amd64 (5.2+dfsg-3+b1) ...
Setting up libmcrypt4 (2.5.8-3.3) ...
Setting up libdbi-perl (1.636-1+b1) ...
Setting up mariadb-common (10.1.26-0+deb9u1) ...
update-alternatives: using /etc/mysql/mariadb.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Setting up mariadb-client-core-10.1 (10.1.26-0+deb9u1) ...
Setting up libmcrypt-dev (2.5.8-3.3) ...
Setting up libdbd-mysql-perl (4.041-2) ...
Setting up mariadb-client-10.1 (10.1.26-0+deb9u1) ...
Setting up default-mysql-client (1.0.2) ...
Setting up mysql-client (5.5.9999+default) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
error: /usr/src/php/ext/mcrypt does not exist

usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]
   ie: /usr/local/bin/docker-php-ext-install gd mysqli
       /usr/local/bin/docker-php-ext-install pdo pdo_mysql
       /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop

if custom ./configure arguments are necessary, see docker-php-ext-configure

Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip

Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
ERROR: Service 'app' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y libmcrypt-dev mysql-client         && docker-php-ext-install mcrypt pdo_mysql' returned a non-zero code: 1

Если запустить команду в конце вывода под рутом в консоле то получаю ошибку :

root@serge:/mnt/_work_sdb8/wwwroot/docker_test/dockerApp# apt-get update && apt-get install -y libmcrypt-dev mysql-client         && docker-php-ext-install mcrypt pdo_mysql
Hit:1 [url]http://ua.archive.ubuntu.com/ubuntu[/url] bionic InRelease
Hit:2 [url]http://ua.archive.ubuntu.com/ubuntu[/url] bionic-updates InRelease                                                                                                                                                             
Hit:3 [url]http://ua.archive.ubuntu.com/ubuntu[/url] bionic-backports InRelease                                                                                                                                                           
Ign:4 [url]http://dl.google.com/linux/chrome/deb[/url] stable InRelease                                                                                                                                                                                
Hit:5 [url]http://ppa.launchpad.net/clipgrab-team/ppa/ubuntu[/url] bionic InRelease                                                                                                                                                                    
Hit:6 [url]https://deb.nodesource.com/node_10.x[/url] bionic InRelease                                                                                                                                                                                 
Hit:7 [url]http://dl.google.com/linux/chrome/deb[/url] stable Release                                                                                                                                                                                  
Hit:8 [url]https://repo.skype.com/deb[/url] stable InRelease                                                                                                                     
Hit:9 [url]http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu[/url] bionic InRelease                                                                     
Get:10 [url]http://security.ubuntu.com/ubuntu[/url] bionic-security InRelease [83,2 kB]
Fetched 83,2 kB in 1s (104 kB/s)                                  
Reading package lists... Done
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libmcrypt-dev is already the newest version (2.5.8-3.3).
mysql-client is already the newest version (5.7.22-0ubuntu18.04.1).
The following packages were automatically installed and are no longer required:
  gyp libjs-async libjs-inherits libjs-node-uuid libssl-dev libssl-doc libuv1-dev
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 29 not upgraded.
docker-php-ext-install: command not found

А что это за docker-php-ext-install и почему он не найден ?

Понравилась статья? Поделить с друзьями:
  • Error encountered during optimized media generation davinci resolve
  • Error encountered during batch process kontakt
  • Error enbhost exe
  • Error empty playbook nothing to do
  • Error empty file upload result перевод