인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

솔송주님의 프로필 이미지

작성한 질문수

초보를 위한 도커 안내서

도커 기본 명령어 (volume)

-v 옵션 후 workpress database 에러

작성

·

38

0

stop, rm 해서 mysql 지우고

mysql 경로 만든 다음에

docker run -d -p 3305:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql -v 제 경로/mysql:/var/lib/mysql mariadb:10.9

다시 하고

docker exec -it mysql mysql

create database wp CHARACTER SET utf8; grant all privileges on wp.* to wp@'%' identified by 'wp'; flush privileges;

quit
이거까지 정상적으로 잘했습니다.

docker ps로 mysql로 잘 떠있는 것도 확인 가능합니다.

그런데 localhost:8080으로 workpress 띄우면

error establishing a database connection이 뜹니다.

3306이 이미 사용중이라고 해서 3305로 했고 -v 옵션 하기전에는 3305로 잘떠서 실습에 문제 없었습니다. 확인 좀 부탁드리겠습니다 ㅠㅠ

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 솔송주님!

현재 발생한 문제는 주로 데이터베이스 연결 정보(MYSQL 환경 변수)와 관련된 문제로 보입니다. 또한 데이터를 저장할 경로를 지정할 때 발생할 수 있는 권한 문제도 확인해보시는 것이 좋습니다. 비슷한 문제를 겪었던 여러 수강생의 경험을 참고하여 답변을 드리겠습니다.

  1. WORDPRESS_DB_HOST 확인:
    • MySQL 컨테이너가 3305 포트로 실행 중이므로, WordPress 컨테이너의 환경 변수가 이를 정확히 반영하도록 설정되어 있는지 확인해야 합니다. 특히 WORDPRESS_DB_HOST 설정 시 host.docker.internal:3305와 같이 포트 번호까지 정확히 입력해야 합니다.

관련된 질문을 통해서도 문제 해결에 도움을 드릴 수 있을 것 같습니다. 아래 링크들을 참고해 주세요.

  1. 볼륨 마운트 경로의 권한 확인:

    • 호스트의 /var/lib/mysql에 마운트 된 디렉토리에 MySQL이 데이터를 기록할 수 있는 충분한 권한이 부여되어 있는지 확인해 보세요. 파일 시스템의 권한 문제는 데이터베이스 연결에 장애를 일으킬 수 있습니다.
  2. 컨테이너 내부의 MySQL 접근 확인:

    • WordPress 컨테이너 내에서 MySQL 컨테이너로의 네트워크 연결이 제대로 이루어지는지 docker exec -it 워드프레스컨테이너명 또는 ID /bin/bash로 들어가서 MySQL 접속 시도해 보세요.

위의 링크들과 설명을 참고하여 문제를 해결해 나가시길 바랍니다. 저도 여러 해결책을 기반으로 답변드리고 있는 만큼, 궁금한 점이나 추가로 필요한 부분이 있으면 언제든지 질문 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

솔송주님의 프로필 이미지
솔송주
질문자

WORDPRESS_DB_HOST 설정 시 host.docker.internal:3305와 같이 포트 번호까지 정확히 입력해야 합니다.
> 해당 부분 network 부분에서
docker run -d -p 8080:80 \ --network=app-network \ -e WORDPRESS_DB_HOST=mysql \ -e WORDPRESS_DB_NAME=wp \ -e WORDPRESS_DB_USER=wp \ -e WORDPRESS_DB_PASSWORD=wp \ wordpress
이렇게 되어있어서..바꿨습니다.

e WORDPRESS_DB_HOST=host.docker.internal:3305 이렇게 했을때는 문제가 없는데 ㅠㅠ network에서는 3305를 어떻게 처리해야할까요