Docker에서 PHP와 MySQL 실행하기
발행: (2026년 5월 9일 PM 11:00 GMT+9)
2 분 소요
원문: Dev.to
Source: Dev.to

단계
1. 새 디렉터리 만들기
.
├── docker-compose.yml
├── Dockerfile
├── .env.example
├── README.md
└── src/
└── index.php
2. docker-compose.yml 만들기
version: '3.8'
services:
app:
build: .
container_name: php_app
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
depends_on:
db:
condition: service_healthy
env_file:
- .env
networks:
- app_network
db:
image: mysql:8.0
container_name: php_db
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
env_file:
- .env
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"]
interval: 5s
timeout: 10s
retries: 10
networks:
- app_network
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
db:
condition: service_healthy
ports:
- 8081:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
PMA_ARBITRARY: ${PMA_ARBITRARY}
env_file:
- .env
networks:
- app_network
volumes:
mysql_data:
networks:
app_network:
driver: bridge
3. Dockerfile 만들기
FROM php:8.2-apache
RUN docker-php-ext-install pdo pdo_mysql mysqli
RUN a2enmod rewrite
4. src/index.php 만들기
PDO::ERRMODE_EXCEPTION]
);
$connected = true;
echo "
## Database connection successful!
";
$stmt = $pdo->query("SELECT VERSION()");
echo "
MySQL version: " . $stmt->fetchColumn() . "
";
} catch (PDOException $e) {
if (time() - $start >= $wait) {
echo "
## Connection failed after $wait seconds
";
echo "
" . $e->getMessage() . "
";
}
sleep(2);
}
}
5. .env 만들기
DB_ROOT_PASSWORD=rootpassword
DB_DATABASE=myapp
DB_USERNAME=myuser
DB_PASSWORD=mypassword
PMA_ARBITRARY=1
시작 방법
# 모든 컨테이너 시작
docker-compose up -d
# 실행 중인지 확인
docker-compose ps
# 모든 컨테이너 중지
docker-compose down
접근 방법
- PHP App:
- phpMyAdmin: (서버:
db, 사용자명:root, 비밀번호:rootpassword)