도커 컨테이너를 이용하여 로컬 APM 개발 환경을 구성해보자.
/php/web_dev 경로에 Dockerfile을 저장한다. (파일명 Dockerfile)
Dockerfile은 단순히 도커 컨테이너 이미지를 빌드해주는 파일이다.
docker-compose의 경우 도커 컨테이너를 정의해주는 파일이다.
아래와 같이 Dockerfile은 php:7.3.3-apche 이미지를 빌드한다.
FROM: 도커 이미지 선택
RUN: 도커 컨테이너 내에서 실행하는 커맨드
EXPOSE: 포트 바인딩
FROM php:7.3.3-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install mysqli
EXPOSE 80
docker-compose의 경우 아래와 같이 각 빌드된 이미지에 대한 path, volumes, network 등 옵션을 정의한다.
기존에 생성한 docker-compose.yml 파일을 아래와 같이 수정하자. 각 옵션들은 직관적으로 이해할 수 있다.
version: '3.3'
services:
web:
build:
context: ./php
dockerfile: Dockerfile
container_name: php73
depends_on:
- db
volumes:
- ./php:/var/www/html/
ports:
- 8000:80
db:
container_name: mysql8
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test_db
MYSQL_USER: devuser
MYSQL_PASSWORD: devpass
ports:
- 6033:3306
더 자세한 내용은 dockerhub에서 확인할 수 있다. 각 이미지에 관한 docker-compose가 정의되어 있다.
기존 index.php 파일은 mysql connection test가 가능하도록 수정한다.
<?php
$host = 'db'; // service name from docker-compose.yml
$user = 'devuser';
$password = 'devpass';
$db = 'test_db';
$conn = new mysqli($host, $user, $password, $db);
if($conn -> connect_error){
echo 'connection failed' . $conn -> connect_error;
}
echo 'Sucessfully connected to MYSQL';
?>
먼저 기존 도커 컨테이너 및 이미지가 꼬여있을 수 있으니, 아래 명령어를 통해 전체 삭제한다.
PS D:\docker-test\web_dev\php> docker rm $(docker ps -a -q)
PS D:\docker-test\web_dev\php> docker rmi $(docker images -q)
그리고 docker-compose up 명령문을 다시 실행한다. 그럼 Dockerfile을 통해 php:7.3.3-apache 이미지를 빌드하고, docker-compose.yml에서 정의한 옵션대로 도커 컨테이너를 실행한다.
브라우저에 로컬 대역으로 접속해보면 아래와 같이 PHP Apache가 MySQL과 Connection이 성공된 메시지를 받을 수 있다.
만약 실패 메시지가 뜬다면 도커 이미지와 컨테이너를 중지 및 삭제하고 docker-compose up 명령문을 재실행 해보자.
'잡부생활 > Container' 카테고리의 다른 글
도커컴포즈로 node.js 환경 구성하기 (0) | 2019.12.24 |
---|---|
도커컴포즈로 워드프레스 구성하기 (0) | 2019.12.24 |
도커컴포즈로 리액트 환경 구성하기 (2) | 2019.11.18 |