docker-compose.yml 파일을 만들어 간단하게 테스트를 하는 중이었다.
wordpress를 띄우는 것인데, 해당 yml 파일은 다음과 같다.
version: '2'
services:
db:
image: mariadb:10.5
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
volumes:
- ./wp:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
그 결과 cmd창에선 다음과 같은 오류를 내뿜었다...
C:\Users\(사용자)\docker-test>docker-compose up -d
Creating network "docker-test_default" with the default driver
Creating docker-test_db_1 ...
Creating docker-test_wordpress_1 ... error
Creating docker-test_db_1 ... done
nd: An attempt was made to access a socket in a way forbidden by its access permissions.
ERROR: for wordpress Cannot start service wordpress: Ports are not available: listen tcp 0.0.0.0:8000: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
ERROR: Encountered errors while bringing up the project.
아 그럼 ports를 8000:80이 아닌 8080이나 뭐 다른 번호로 설정해서 다시 실행해볼까? 했더니 이번엔 다음과 같이 localhost:8080에서 접속이 안된다... 시x
몇 시간동안 해결해보려고 애쓰고 구글링한 결과 port번호로 고생하셨던 어떤분의 글을 찾았다.
제가 참고했던 글
대충 요약하자면, 이미 8000번 port가 다른 이유로 사용이 금지되어 있기 때문이다.
다음 명령어를 입력하면 tcp 포트 제외 범위가 나오게 된다.
netsh interface ipv4 show excludedportrange protocol=tcp
내 결과는 8000번 대 port 번호가 제외범위 내에 있진 않지만, 며칠 전에 JPA를 공부하기 위해 H2 데이터베이스를 설치하여 띄우는 과정에서 localhost:8080에서 H2가 접속이 안됐을 때, 이리저리 둘러보다 일정 port 범위의 사용제한을 풀어 다시 세팅하는 과정을 겪었었다. (심지어 IntelliJ 자체도 실행이 안됐때가 있었음) 확실한 건 아니지만 위 캡쳐와 같이 시작~끝 포트에 8000번 대가 없는 건 그때 내가 8000번 대를 만졌기 때문이 아닐까 한다. 뭐 결론적으로 8000:80은 불가하고 8080은 될 것 같은데...
어찌 됐든 한참을 헤메다가 yml파일에서 8080:80으로 port번호를 수정하여 다시 docker-compose up
을 시도...
오오오 제발...!
성공적...!
근본적으로 뭐가 문제였는진 나도 정확히 모르겠지만 일단 글로 정리해뒀다가 추후에 원인을 발견하게 되면 추가해야겠다.
// windows 환경에서 docker는 별로인거같다. 주문한 맥북 빨리 도착하길...
// cmd에서 서버 종료는 ctrl + c