반응형
항상 개발 시작 초기에 개발 환경이 발목을 잡는다.
이런 와중에 docker 라는 소프트웨어를 알게되었고 매료되어 공부하고 있다.
기존에 있었던 nginx, php, mysql을 docker를 이용하여 개발환경을 셋팅하고 있다.
version: "3.7"
services:
mysql:
container_name: mysql
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: 데이터베이스명
MYSQL_USER: 생성할 유저명
MYSQL_PASSWORD: 생성할 유저비밀번호
MYSQL_ROOT_PASSWORD: ROOT 비밀번호
volumes:
- ./_docker/mysql/data:/var/lib/mysql:rw
- ./_docker/mysql/my.cnf:/etc/my.cnf
ports:
- "3306:3306"
command: --default-authentication-plugin=mysql_native_password
app:
container_name: php
build:
context: ./_docker/php/
dockerfile: Dockerfile
working_dir: /var/www/html
depends_on:
- mysql
volumes:
- ./:/var/www/html:rw
- ./_docker/php/php.ini:/usr/local/etc/php/php.ini
command: bash -c "php-fpm"
restart: always
environment:
pma_port: 포트
pma_host: docker compose DB 서비스명
pma_usere: 유저명
pma_password: 유저비밀번호
links:
- mysql
nginx:
container_name: nginx
image: nginx:latest
command: [ "nginx", "-g", "daemon off;" ]
working_dir: /var/www/html
depends_on:
- app
- mysql
volumes:
- ./:/var/www/html:rw
- ./_docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
- "443:443"
links:
- app
restart: always
위와 같이 docker compose를 작성하였고 실행까지 잘된다.
그런데 로컬 컴퓨터에서 DB에 접속하는것은 잘 되는데, php에서 mysql로 접속하는것은 계속 안되서 애가 탄다..
호스트와 포트와 모든것이 잘되는데 대체 무엇이 문제일까..
계속해서 테스트를 해보던 중 host에 문제가 있는것을 확인했다.
$host = 'mysql'; // 이 부분을 신경쓰자
$user = '유저명';
$password = '비밀번호';
$db = '데이터베이스명';
$conn = new mysqli($host, $user, $password, $db);
if ($conn->connect_error) {
echo 'connection failed' . $conn->connect_error;
exit;
}
echo '<br>Sucessfully connected to MYSQL';
$host에서 docker-compose로 생성한 db의 서비스명을 적어주니까 아주 잘 작동한다.
휴 개발은 참 재밌다 ^-^
반응형