제목 그대로 , php, apache 컨테이너에서 mariadb 컨테이너로의 연결입니다.
정말 간단했는데 너무나도 삽질을해서 기록삼아 ... 적어둡니다.
아래 이미지는 제가 직접 만든것으로 Apache, PHP7, mariaDB 의 이미지입니다.
아래 이미지 토대로 작업을 진행했습니다~!
docker pull bugkingus/centos8_200914:1.0
웹에서 ip주소:83 하면 접속이 가능하게끔 포트포워딩을 하였고
호스트의 경로 /var/www/html/test 폴더와
컨테이너의 경로 /var/www/html/폴더를 이어주었습니다(마운트)
docker run -i -t -p 83:80 -v /var/www/html/test:/var/www/html --name test centos8_200914:latest
포트포워딩 및 마운트 정보가 잘 되었는지 확인하는 방법은 아래 처럼 치시면 됩니다.
docker inspect test
mariadb 컨테이너도 가동을 하겠습니다, db 컨테이너 역시 위에서 한것처럼 포트포워딩을 해줘야합니다
docker run -i -t -d -p 60000:3306 --name testDB -e MYSQL_ROOT_PASSWORD=비밀번호 -v /var/lib/mysql:/var/lib/mysql mariadb
아래 명령어로 컨테이너 목록을 볼수있고 당연히 STATUS 가 UP 된 상태여야합니다
혹시라도 UP 이 아닐경우 docker start 컨테이너ID or 이름 으로 켜줍니다
docker ps -a
이렇게 세팅을 해줬으면 됐고, 어차피 마운트로 호스트 ftp 에서 수정해도 apache, php 컨테이너와 연결이 되어있기 때문에 파일질라로 호스트에 연결해서 connect.php 내용을 수정하였습니다.
db_host 쪽을 호스트 ip:포트 추가해보고 별의별 삽질을 다했는데 계속 안되다가 컨테이너 IP 를 넣어줘야 접근이 가능한것이었습니다 ㅠ
컨테이너 IP 확인법
docker inspect -f "{{ .NetworkSettings.IPAddress }}" testDB
<?
//============= DB 접속 ========================
$db_host = '172.17.0.2';
$db_name = 'testDB';
$db_user = '유저아이디';
$db_pass = '비밀번호';
$connect = mysqli_connect($db_host,$db_user,$db_pass, $db_name) or die( " SQL server에 연결할 수 없습니다");
mysqli_select_db($connect,$db_name);
mysqli_query($connect,"SET NAMES 'utf8'");
if (mysqli_connect_errno()) {
throw new Exception(mysqli_connect_error(), mysqli_connect_errno());
}
?>
이렇게 해주니 DB 연결이 잘 되더군요 .. 괜히 포트번호 넣고 별의 별 삽질하면서 하루 시간 다날렸습니다 ㅠ
아 그리고 php 인식 안되시는분들은 php 컨테이너 내부에 php.ini 파일 찾아서 shorten_tag 를 On 해주시면 됩니다.
이제 도커 입문자라 부족한 내용이 많습니다
혹시라도 잘못된 정보가 있다면 지적 부탁드리겠습니다.
감사합니다 (_ _)
'IT > Docker' 카테고리의 다른 글
[Docker] mariaDB 컨테이너에 호스트 mariaDB 연결 : Table doesn't exist in engine 오류해결 (0) | 2020.09.22 |
---|---|
[Docker] php 컨테이너에서 세션 안먹는 문제 (0) | 2020.09.18 |
[Docker] 도커허브에 이미지 올리기 (0) | 2020.09.14 |
[Docker] creating overlay mount to /var/lib/docker/overlay2 도커에러 (0) | 2020.09.12 |
[Docker] 도커 입문 명령어 정리 (설치이후) (0) | 2020.09.11 |