Docker & Kubernetes

PHP 컨테이너와 MySQL 컨테이너의 연동 예시

beekei 2021. 11. 26. 13:46
반응형

이번엔 MySQL 컨테이너(DB 컨테이너)와 PHP 컨테이너(AP 컨테이너)를 컨테이너 네트워크로 연결해 보겠다.

1. 컨테이너 네트워크 작성

apl-net 네트워크 생성

 

2. MySQL 서버 기동

MySQL 컨테이너 생성

-e 옵션으로 환경 변수 MYSQL_ROOT_PASSWORD를 저장했다.

이러한 환경 변수를 사용해 컨테이너를 개발하면 이미지의 재사용성이 좋아진다.

 

3. 애플리케이션 컨테이너 개발

파일 구조는 다음과 같다

  • php-example
    • Dockerfile 
    • php
      • index.php

Dockerfile
index.php

php-example 디렉터리에서 컨테이너 이미지를 빌드한다.

컨테이너 이미지 빌드
이미지 목록

정상적으로 빌드가 되었다면 docker images로 생성된 이미지를 확인할 수 있다.

 

4. 컨테이너 실행

docker run [옵션] 리포지터리명[:태그]로 빌드한 이미지를 컨테이너로 실행할 수 있다.

http://localhost:8080에 접속해보면 접속에 성공한것을 확인할 수 있다.

php 컨테이너 로그 확인

 

내용을 정리하면 데이터베이스는 MySQL의 공식 이미지를 사용했고 환경 변수로 사용자와 비밀번호를 설정하여 컨테이너를 기동했다.
그리고 데이터베이스에 접속하는 애플리케이션은 PHP 공식 이미지를 사용해서 개발했다.
동일한 컨테이너 네트워크를 사용해서 두 컨테이너를 연동했고, 포트 포워딩을 설정하여 호스트의 IP 주소로 애플리케이션을 공개했다.

컨테이너 네트워크는 컨테이너 간에 서로 통신할 수 있는 통로와ㄷ 같다.
쿠버네티스에서는 비슷한 역활을 수행하는 클러스터 네트워크가 있다.
반응형