#docker #docker-compose #health-check
#docker #docker-compose #проверка работоспособности
Вопрос:
В настоящее время я работаю над проектом микросервиса с использованием docker-compose. Итак, я добавлял проверки работоспособности в свои контейнеры. Но, кроме mysql, все остальное остается нездоровым, но я не знаю почему.
Вот мой файл docker-compose.yml.
version: "3"
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 52.78.52.254
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
volumes:
- ./data/mysql:/var/lib/mysql:rw
environment:
- MYSQL_ROOT_PASSWORD=dnjscksdn98@
- MYSQL_DATABASE=explanet_dev
- MYSQL_USER=alex
- MYSQL_PASSWORD=dnjscksdn98@
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "mysql", "-u$MYSQL_USER", "-p$MYSQL_ROOT_PASSWORD" ]
interval: 30s
timeout: 10s
retries: 3
api-gateway:
container_name: api-gateway
ports:
- "80:80"
build:
context: ./api-gateway
args:
ENVIRONMENT: dev
dockerfile: Dockerfile
healthcheck:
test: [ "CMD", "curl", "-f", "http://api-gateway/health-check" ]
interval: 30s
timeout: 10s
retries: 3
depends_on:
- mysql
chatting-service:
container_name: chatting-service
ports:
- "8080:8080"
build:
context: ./chatting-service
args:
ENVIRONMENT: dev
dockerfile: Dockerfile
healthcheck:
test: [ "CMD", "curl", "-f", "http://chatting-service:8080/health-check" ]
interval: 30s
timeout: 10s
retries: 3
depends_on:
- mysql
- kafka
- api-gateway
И если я введу docker inspect ${any container name}
, это будет выглядеть так в State
.
"Health": {
"Status": "unhealthy",
"FailingStreak": 12,
"Log": [
{
"Start": "2020-12-01T04:47:28.090046668Z",
"End": "2020-12-01T04:47:28.158193366Z",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"curl\": executable file not found in $PATH": unknown"
},
{
"Start": "2020-12-01T04:47:58.162656864Z",
"End": "2020-12-01T04:47:58.233280387Z",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"curl\": executable file not found in $PATH": unknown"
},
{
"Start": "2020-12-01T04:48:28.238446336Z",
"End": "2020-12-01T04:48:28.325520772Z",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"curl\": executable file not found in $PATH": unknown"
},
{
"Start": "2020-12-01T04:48:58.330407168Z",
"End": "2020-12-01T04:48:58.398503364Z",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"curl\": executable file not found in $PATH": unknown"
},
{
"Start": "2020-12-01T04:49:28.403163576Z",
"End": "2020-12-01T04:49:28.477627297Z",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"curl\": executable file not found in $PATH": unknown"
}
]
}
Мой java-файл Dockerfile выглядит следующим образом.
FROM adoptopenjdk/openjdk11:alpine-jre
COPY build/libs/base-service-0.0.1-SNAPSHOT.jar base-service.jar
ARG ENVIRONMENT
ENV SPRING_PROFILES_ACTIVE=${ENVIRONMENT}
ENTRYPOINT ["java", "-jar", "base-service.jar"]
В настоящее время я работаю на сервере Ubuntu 20.04. Есть ли какие-либо решения?
Комментарии:
1. Вы уверены, что ваши ссылки для проверки работоспособности работают нормально?
Ответ №1:
Привет, сообщение об ошибке довольно четкое, вы не можете запустить curl для проверки работоспособности, потому что он не включен в базовый образ, который вы используете, вам необходимо его установить.
Пример для alpine images
Комментарии:
1. Это было ..!! Спасибо👍🏻