반응형

항상 개발 시작 초기에 개발 환경이 발목을 잡는다.

 

이런 와중에 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의 서비스명을 적어주니까 아주 잘 작동한다.

 

휴 개발은 참 재밌다 ^-^

 

반응형

+ Recent posts