도커화하려는 NestJS 애플리케이션이 있습니다. 저는 docker를 처음 접했고 이 작업을 수행해야 합니다. 내 NestJS 애플리케이션에서는 Typeorm과 함께 mysql 데이터베이스를 사용합니다. 이 mysql 자체는 docker 이미지에서 가져온 것입니다. 즉, mysql이 내 컴퓨터에 설치되어 있지 않습니다.
다음 docker-compose.yml 파일이 있습니다.
으아아아docker-compose up -d를 실행하고 내 컴퓨터의 데이터베이스를 사용할 수 있습니다. 지금 당장 작성하려고 하는 Dockerfle도 있습니다.
지난 5시간 동안 많은 것을 바꾸었는데 요약하면 다음과 같습니다.
으아아아위의 Docekerfile에서 하려는 작업은 호스트 머신에 우분투 이미지를 생성하고 애플리케이션이 mysql과 함께 사용될 수 있도록 컬, 노드, mysql을 각각 설치하는 것입니다. docker build -t my-app을 통해 이 이미지를 빌드할 수 있습니다.
그런 다음 image docker run my-app을 실행했는데 다음 오류가 발생했습니다.
으아아아이 문제를 어떻게 처리해야 할지 모르겠습니다.
참고로 여기 내 app.module.ts 파일이 있습니다
으아아아이 오류는 무슨 일인가요? 이 문제를 어떻게 해결할 수 있나요? 모든 도움에 감사드립니다.
건배
편집: 이제 문제를 좀 더 이해하게 된 것 같아서 NestJS 앱과 mysql 이미지를 모두 실행하는 docker-compose-yml 파일을 작성하려고 합니다. 먼저 dockerfile을 =>
로 변경했습니다. 으아아아그런 다음 docker-compose.yml 파일을 작성했습니다 =>
으아아아이제 bash에서 sudo docker-compose up을 실행하면(sudo가 없으면 권한 거부 오류가 발생함) 다음 오류가 발생합니다.
으아아아내가 아는 한 데이터베이스에 연결할 수 없습니다. 내가 뭘 잘못했나요? 이 문제를 어떻게 해결할 수 있나요?
편집 2: 댓글을 바탕으로 몇 가지 사항을 더 변경했습니다. 제가 찾은 결과는 다음과 같습니다.
DB_HOST 값은 중요하지 않은 것 같습니다.
으아아아이 값을 원하는 대로 변경할 수 있으며 스크립트는 로컬 컴퓨터에서 실행됩니다.
이것은 다시 내 app.module.ts 파일입니다 =>
으아아아Docker만 설치된 시스템에서 실행될 수 있도록 이 애플리케이션을 docker화하려고 할 때 =>
와 같이 docker-compose.yml 파일을 변경하려고 합니다. 으아아아이로 인해 두 가지 다른 동작이 발생합니다. 더 이상 docker-compose를 실행할 수 없으며 다음 오류가 발생합니다 =>
으아아아Fish 터미널을 사용하고 있으므로 어떤 이유로 sudo docker-compose up을 실행하려면 bash로 변경해야 합니다. 그러면 데이터베이스 연결 문제를 나타내는 다음 오류가 발생합니다=>
으아아아정말 막혔어요.
docker-compose.yml 파일을 아래와 같이 변경하면 모든 문제가 해결되었습니다 =>
으아아아이것은 내 Dockerfile입니다 =>
으아아아