Tenho alguns microsserviços spring boot. Quero executá-los usando o docker compose. Para ter certeza de que os serviços são executados em ordem, usei um arquivo .sh para executar um deles antes dos outros porque outros microsserviços dependem dele. O arquivo de script bash roda muito bem, mas ele para o contêiner do chamador. Pesquisei na Internet e percebi que alguns comandos devem ser adicionados no final do arquivo de script bash: /cnb/process/web
or ./cnb/lifecycle/launcher
para continuar o processo. Mas esta mensagem é exibida: /cnb/process/web: No such file or directory
.
Versão do Spring Boot: 3.2.2
Docker compose: 3.8
arquivo .sh:
#!/bin/bash
# check-config-server-started.sh
apt-get update -y
yes | apt-get install curl
curlResult=$(curl -s -o -I -w "%{http_code}" http://cloud-config-server:8888/actuator/health)
echo "result status code:" "$curlResult"
while [[ ! $curlResult == "200" ]]; do
>&2 echo "Config server is not up yet!"
sleep 2
curlResult=$(curl -s -o -I -w "%{http_code}" http://cloud-config-server:8888/actuator/health)
done
/cnb/process/web
#./cnb/lifecycle/launcher
Arquivo de composição do Docker:
version: "3.8"
services:
cloud-config-server:
container_name: cloud-config-server-container
build:
dockerfile: ./cloud-config-server/Dockerfile
ports:
- "8888:8888"
environment:
- "SERVER_PORT=8888"
networks:
my-compose-net:
restart: on-failure
webapp:
container_name: webapp-container
build:
dockerfile: ./webapp/Dockerfile
ports:
- "8081:8081"
volumes:
- "./check-config-server-started.sh:/usr/local/bin/check-config-server-started.sh"
user: root
entrypoint: [ "check-config-server-started.sh" ]
environment:
- "SPRING_CLOUD_CONFIG_URI=http://cloud-config-server:8888"
depends_on:
- cloud-config-server
networks:
my-compose-net:
restart: on-failure
networks:
my-compose-net: