docker로 mysql을 띄워서 사용하려고
docker 디렉토리에 fintech-mysql.sh 셸 스크립트 파일을 만듦.
docker run -d \
--name fintech-mysql \
-e MYSQL_ROOT_PASSWORD="fintech" \
-e MYSQL_USER="fintech" \
-e MYSQL_PASSWORD="fintech" \
-e MYSQL_DATABASE="fintech" \
-p 3306:3306 \
mysql:latest
옆에 실행버튼 눌러서 실행시키면 자꾸 아래와 같은 오류 발생
/bin/sh : '/bin/sh' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.
위치 줄:1 문자:1
+ /bin/sh C:/spring_prac/fintech/docker/fintech-mysql.sh
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (/bin/sh:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
원인을 찾아보는데 나와 똑같은 용어로 오류가 나는 사람들은 없었다. 인텔리제이 터미널은 나는 기본적으로 powershell인데 혹시 터미널이 git bash가 아니어서 발생하는 오류인가 했다.
왜냐하면 shell script파일 실습을 할땐 항상 우분투 환경이었고 파일 제일 첫 줄에 shebang이라는
#!/bin/bash를 넣어주었기 때문인데 윈도우 power shell에서는 이것을 인식하지 못 하는 것 같았다.
결국 git bash로 터미널 바꿔주니까 해결 ~!!!
➡️원인
power shell에서는 셸 스크립트 실행 못 함. 애초에 윈도우에서 안 됨
.sh확장자의 셸 스크립트 파일은 BASH라는 컴퓨터 프로그램을 통해 실행하여 linux 운영체제에 사용되기 때문 !
명령어가 달라서 인식 못 한 거임
➡️해결
인텔리제이의 기본 터미널을 git bash로 변경해줌.
File - Settings - Shell Path를 내 Shell이 설치된 경로로 지정 경로는 ""로 감싸고 -login -i 붙여주기
"C:\Program Files\Git\bin\sh.exe" -login -i
또는
C:\Program Files\Git\bin\sh.exe
입력
인텔리제이 터미널이 git bash로 바뀌었고 sh파일이 정상 실행되어 container ID가 나오고 정상적으로 동작한 것을 알 수 있음.!
제일 아래 도커 컨테이너도 생성된 것을 확인
산넘어 산 ~