급하게 php 복구 프로젝트를 진행하게되어 도커를 이용한 nginx -> php7 연동 이력이다.
FROM nginx:latest
# 설정 파일을 Docker 내부로 복사
# COPY ./conf/nginx.conf /etc/nginx/conf.d/default.conf
# Docker Host로 포트 번호 노출
EXPOSE 80
# 백그라운드에서 실행
ENTRYPOINT ["nginx","-g","daemon off;"]
server {
listen 80;
root /var/www/html/public;
index index.html index.htm index.php;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
FROM php:7.4-fpm
WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN docker-php-ext-enable mysqli
version: "3.7"
services:
app:
container_name: php
build:
context: ./php
dockerfile: Dockerfile
ports:
- "9000:9000"
volumes:
- ../dev:/var/www/html/public
# - ./conf/docker-php-ext-sodium.ini:/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
web:
container_name: nginx
# 이미지 지정 - 직접 작성한 dockerfile을 실행하여 컨테이너 생성
build:
context: ./nginx
dockerfile: Dockerfile
depends_on:
- app
volumes:
- ../dev:/var/www/html/public
- ./conf/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
- "443:443"
links:
- app
restart: always