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 и почему он не найден ?