docker-compose로 nginx + php + mysql 서버 만들기

e3hope·2022년 5월 24일
2

docker

목록 보기
2/2

저번에 올렸던 포스터와 다르게 이번엔 apche2 대신 nginx를 활용한 웹서버 구축이다.
apache2에서 nginx로 변한것 말고는 크게 바뀌지 않아 겹치는 내용도 많다.
apache2를 활용한 APM서버 구축은 아래있는 이전 포스터를 봐주면 될거 같다.
https://velog.io/@e3hope/docker-compose%EB%A1%9C-APM%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

docker image 다운

docker pull <이미지>:<버전>

docker pull nginx
docker pull php:7.4-fpm
docker pull mysql:5.7

docker-compose.yml 작성

docker 이미지를 실행시켜주는 docker-compose.yml파일을 아래와 같이 작성한다.

version: '3.9'

services:
    nginx:
        image: nginx:latest
        container_name: nginx
        ports:
            - "8000:80"
        volumes:
            - ./Project:/var/www/html #프로젝트 경로
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf #nginx 설정 파일

    mysql:
        image: mysql:5.7
        container_name: mysql
        restart: unless-stopped
        tty: true
        ports:
            - "3306:3306"
        environment:
            MYSQL_HOST: localhost
            MYSQL_DATABASE: dbname #디비명
            MYSQL_USER: user #사용자명
            MYSQL_PASSWORD: password #사용자비밀번호
            MYSQL_ROOT_PASSWORD: password #루트계정비밀번호
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql

    php:
        image: php:7.4-fpm
        container_name: php
        volumes:
            - ./Project:/var/www/html #프로젝트 경로
        ports:
            - "9000:9000"
        command:
            - /bin/sh
            - -c
            - |
              echo "security.limit_extensions = .php .phtml .php3 .php4 .php5 .html .htm" >> /usr/local/etc/php-fpm.d/www.conf
              php-fpm

default.conf 수정

nginx의 default.conf파일을 수정한다.
파일을 작성한 경로에 nginx/default.conf을 생성후 작성한다.

server {
    listen 80;
    index index.php index.htm index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html;

    location ~ \.(php|html|htm)$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

docker-compose 실행

작성이 완료가 되었으면 도커를 실행해 준다.

docker-compose up --build	# 첫 실행
docker-compose up -d		# 추후 실행

docker-compose 중지

docker-compose down
profile
성장하고 싶은 개발자

0개의 댓글