제목 | Docker기반 환경에서 CI4와 DB 접속이 안되는 경우 | ||
---|---|---|---|
카테고리 | CI 4 관련 | ||
글쓴이 | CI걸음마 | 작성시각 | 2022/01/20 17:23:57 |
|
|||
우선 저의 CI4 환경은 https://www.cikorea.net/bbs/view/lecture?idx=20954&lists_style= 위의 글을 참조해서, Docker-compose를 통해서 환경을 구축했습니다. --- docker-comose.yml version: '3.1' services: mysql: image: 'mysql:5.7' working_dir: /application volumes: - '.:/application' environment: - MYSQL_ROOT_PASSWORD=1004 - MYSQL_DATABASE=analysis_googleKeyowrdAd - MYSQL_USER=jongin - MYSQL_PASSWORD=jongin1004 ports: - '8002:3306' webserver: image: 'nginx:alpine' working_dir: /application volumes: - '.:/application' - './phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf' ports: - '8000:80' php-fpm: build: phpdocker/php-fpm working_dir: /application volumes: - '.:/application' - './phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini'
여기서, 지금 문제가 발생한 부분은 Mysql Workbench에서는 Mysql에 사진과 같이 연결이 되고, 테이블 생성 및 데이터 삽입까지 가능합니다.
아래가 현재 실행중인 도커 컨테이너 상황입니다.
CI4// Controller.php public function index() { $db = \Config\Database::connect(); $query = $db->query('SELECT * FROM Reservation'); $results = $query->getResultArray(); var_dump($results); } 간단하게, db에 접속해서 Reservation 테이블에 있는 데이터를 조회하는 예제를 만들어서 실행해보면
"Unable to connect to the database. Main connection [MySQLi]: No such file or directory" 위와 같은 오류가 계속 발생합니다.
CI4// database.php public $default = [ 'DSN' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'analysis_googleKeyowrdAd', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 8002, ]; 위와같이 설정되어있고, password은 일부로 빼둔 상태고 코드에는 제대로 작성되어있습니다. hostname을 localhost로도 해보고 도커 컨테이너에 포트가 0.0.0.0:8002->3306이라서 127.0.0.1:8002로도 바꿔보고 port를 3306로도 해보고 이것저것 바꿔봤는데, 해결이 안되고 있습니다 ㅠㅠ...
Docker를 통해서 각기 다른 컨테이너로 생성했기 때문에, 다른 추가적인 설정이 필요한걸까요?? |
|||
다음글 | 웹 크롤링 / 서로다른 도메인에서 세션유지 통신 문의 (4) | ||
이전글 | 컨트롤러에서 모델 인스턴스를 동적으로 로드하고싶습니다 (3) | ||
변종원(웅파)
/
2022/01/21 09:52:15 /
추천
1
|
CI걸음마
/
2022/01/21 14:22:40 /
추천
0
@변종원(웅파) 답변 감사합니다. 참조해서 해결해보겠습니다! |
보통 php 설치시 php와 mysql을 연동해줘야 합니다. 아래 링크는 윈도우에서 연동하는 내용인데 리눅스용도 찾아서 참고하세요.
https://velog.io/@yuus95/apache
도커 yml 내용은 그냥 각자 설치해준 것 밖에 없고 mysql이 돌아가니까 외부 gui툴에서는 접속이 되는데 php 연동이 안되서 소스에서는 작동을 안하는겁니다.