
Error: connect ECONNREFUSED 172.18.0.2:3306 app-1 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)
docker compose up --build 중 오류
연결이 거부된 (ECONNREFUSED) 이유는 MySQL 서버가 아직 완전히 준비되지 않았기 때문
MySQL 서버가 시작되고 준비되는 동안 애플리케이션이 너무 일찍 연결을 시도
해결
[root@master myapp]# cat docker-compose.yaml
version: '3.8'
services:
app:
build: ./internet-banking-server
ports:
- "8080:8080"
depends_on:
db:
condition: service_healthy
networks:
- myapp-network
environment:
MYSQL_HOST: db
MYSQL_USER: user
MYSQL_PASSWORD: abc123
MYSQL_DB: test
client:
build: ./internet-banking-client
ports:
- "80:80"
networks:
- myapp-network
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: abc123
MYSQL_DATABASE: test
MYSQL_USER: user
MYSQL_PASSWORD: abc123
networks:
- myapp-network
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "--silent"]
interval: 30s
timeout: 10s
retries: 5
networks:
myapp-network:
healthcheck를 넣어줘 server가 db(mysql)이 실행된 후에 실행하도록 설정
route가 적용되지 않아 에러 페이지가 뜨는 문제
2024/08/13 18:27:17 [error] 31#31: *3 open() "/usr/share/nginx/html/api/account" failed (2: No such file or directory), client: 192.168.138.1, server: localhost, request: "GET /api/account HTTP/1.1"
해결
다른 app을 사용해 빌드해 Dockerhub에 배포
sssoeun/bank-frontend
sssoeun/bank-backend