===== Проверка состояния контейнера в Docker со swarm =====
====Добавим проверку контейнера в Dockerfile:====
FROM node:14-alpine
RUN apk add curl
WORKDIR /opt/app
ADD index.js .
HEALTHCHECK --interval=5s --timeout=5s --start-period=5s --retries=3 \
CMD curl -f http://localhost:3000 || exit 1
CMD ["node", "./index.js"]
==== Собираем образ ====
vagrant@server3:~/docker-demo-3$ docker build -t localhost:5000/ip .
[+] Building 0.6s (9/9) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 253B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/node:14-alpine 0.5s
=> [1/4] FROM docker.io/library/node:14-alpine@sha256:434215b487a329c9e867202ff89e704d3a75e554822e07f3e0c0f9e60612 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 30B 0.0s
=> CACHED [2/4] RUN apk add curl 0.0s
=> CACHED [3/4] WORKDIR /opt/app 0.0s
=> CACHED [4/4] ADD index.js . 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:bdd5cca7f48f751ec268ee53d60f6f854fa7e29086ec6d9a959ff9eb5d8736ee 0.0s
=> => naming to localhost:5000/ip
vagrant@server3:~/docker-demo-3$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/ip latest bdd5cca7f48f 2 days ago 124MB
==== Заливаем образ в реестр ====
vagrant@server3:~/docker-demo-3$ docker push localhost:5000/ip:latest
The push refers to repository [localhost:5000/ip]
18cafcc3f78c: Layer already exists
ec5ff2197706: Layer already exists
31e6ec6c7217: Layer already exists
31f710dc178f: Layer already exists
a599bf3e59b8: Layer already exists
e67e8085abae: Layer already exists
f1417ff83b31: Layer already exists
latest: digest: sha256:ccf258012f5ea966b9790347191a3938482f1d06fdf20fe0c5c4bac8fee2121b size: 1783
==== Создаем сервис swarm ====
vagrant@server3:~/docker-demo-3$ docker service create --name ip localhost:5000/ip
w6p7q77cz3qk8jyrmz8fzzkdg
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
vagrant@server3:~/docker-demo-3$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
w6p7q77cz3qk ip replicated 1/1 localhost:5000/ip:latest
3srd0mspdl9a registry replicated 1/1 registry:latest *:5000->5000/tcp
==== проверяем работу сервиса ====
vagrant@server2:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95c7d28a432d localhost:5000/ip:latest "docker-entrypoint.s…" 47 seconds ago Up 46 seconds (healthy) ip.1.rtlwee6rg8unsos6okhpgkl7g
видим что контейнер рабочий - **healthy**