1. 에러상황 : Error connecting to database ConnectionRefuseError
2. 시도해본 것들
3. 에러 해결 성공!
4. 작은 에러 docker-compose up 했을때 서버 유지되지 않는문제
1. 에러상황 :
2. 시도해본 것들
1) docker container mysql의 port 변경해보기
로컬 mysql과 충돌될 수 있으므로
host port를 3306에서 3307로 변경해본다.
sequelize를 사용하는 곳에도 똑같이 port를 3307로 변경해준다.
2) docker container의 ip 확인하기
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container id]
3) docker logs확인
4) container app에 접속해서 mysql로의 curl은 잘 된다.
5) mysql container에 접속해서 모든 계정으로의 접근 권한을 추가해준다
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'supersecretpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
원래는 하면 안되는 옵션.. 신중히 결정해야함
6) mysql에 외부 네트워크에서 접근할 수 있게 command옵션을 docker-compose에 추가해준다
외부 네트워크에서 접속 허용하는 command BIND ADDRESS 옵션을 주면
안될 수도 있다고 해서 아래와 같이 추가
command: - --default-authentication-plugin=mysql_native_password --bind-address=0.0.0.0
에러
DB가 자꾸 끊김.
연결할 수 없다는 에러.
수정
command를 각각 나눔
수정전
command: - --default-authentication-plugin=mysql_native_password --bind-address=0.0.0.0
수정후
command:
- --default-authentication-plugin=mysql_native_password
- --bind-address=0.0.0.0
8) root가 아닌 user를 따로 만들어주어 권한 설정을 해준다
9) connect.js 파일 수정
1. 환경변수 못불러왔던 문제 수정 완료 (console.log로 잘 불러오는 것 확인)
import * as dotenv from "dotenv";
dotenv.config();
2. database 명 수정
Sequellize 첫번째 인수를 docker-compose파일에 정의한 container_name으로 수정
const sequelize = new Sequelize(
"mysql-container",
"root",
process.env.DOCKERMYSQL_PASSWORD,
{
dialect: "mysql",
port: "3306",
host: "mysql",
define: {
freezeTableName: true,
},
}
);
3. 성공!
Docker rise넣어보기
https://odysseyj.tistory.com/m/46
[Docker] Docker(도커)+NodeJs(Sequelize)+Mysql 연동하기 / Docker-Compose 구성 및 Docker-Compose 순서 설정.
최근 학교 데이터베이스 과제를 진행하면서 간단한 연락처를 구성하는 웹페이지를 짜게 되었다. 나는 기술 스택을 NodeJS + Mysql 로 사용하고싶은데, 조교님이 기술 스택을 Python(flask) + Postgresql을
odysseyj.tistory.com
위에서 찾은 글에 의하면,
docker-compose로 각각 빌드를했고
depends_on 옵션을 주어 app이 container가 완료될때까지 기다리더라도
성공할 때까지 좀더 기다려야 한다는 글을 읽었고,
docker rise 이미지를 가져와 한번 기다려서 실행해보기로 한다.
결과는 성공적.
오 그런데 1초 성공하고 exited되었는데 이건 좀 더 알아봐야겠다!!!
Connection successfully가 얼마나 반가운지...흐흐흐
좀 기뻐하는 시간
오예!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
나자신 잘했어!!!!!!! 포기하지 않은 나 칭찬해!!!!!!!!!!!!!!!!!!!!1
4. 작은 에러 docker-compose up 했을때 서버 유지되지 않는문제
exited with code 0는 정상 작동 후 종료되었다는 안내문구
더이상 유지할 코드가 없어서 종료된 것으로 보인다.
하고자 한 것은
백 서버를 유지하고자 함이었으므로
Dockerfile에서 진입시킨 docker-entrypoint에서
npm start명령어를 입력하여 유지시킬 수 있었다.
[docker] 백엔드 docker 디버깅해보기
백엔드 초기세팅 : 의문점 1. 백엔드 서버와 mysql 연동은 정상적으로 작동 중인가? mysql과 node 컨테이너 : 의문점 2. mysql과 node 컨테이너는 각각 정상 작동 하는가? 1. node : 에러없음 [문제점 1] node
wha-haha.tistory.com
[docker] 백엔드 docker-compose 파일 build 에러 디버깅해보기
에러상황 구현하고자 했던 것 성공적으로 완료하면 디버깅 방법 1. 의문점 1. env파일에 작성한 환경변수 잘 불러와지는가? 에러상황 : docker-compose 파일을 활용해 build를 하면 container를 생성하지
wha-haha.tistory.com
'공부기록 > Backend' 카테고리의 다른 글
[docker] 백엔드 docker-compose 파일 build 에러 디버깅해보기 2 (0) | 2024.02.13 |
---|---|
[docker] 백엔드 docker-compose 파일 build 에러 디버깅해보기 1 (0) | 2024.02.13 |
docker compose 파일에 network 간단한 구성 (0) | 2024.02.12 |
docker 명령어 모음 (업데이트중) (0) | 2024.02.12 |
[mysql] 비밀번호 설정하기 (1) | 2024.02.10 |