| 제목 | 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 연동이 안되서 소스에서는 작동을 안하는겁니다.