Symfony 프로젝트용 docker-compose 설정 방법
[선택사항] symfony 프로젝트 생성
이 예에서는 package
create-project
를 사용하는 composersymfony/skeleton
명령을 사용하여 간단한 symfony 프로젝트를 생성합니다.composer create-project symfony/skeleton example
작성기를 설치하지 않은 경우 it's official website에서 작성 방법을 찾을 수 있습니다.
PHP-FPM Dockerfile 만들기
프로젝트 루트에
Dockerfile
라는 파일을 만들고 다음 콘텐츠를 작성합니다.FROM php:8.1-fpm
COPY --from=composer /usr/bin/composer /usr/bin/composer
이 예제에서는 php official images의
php:8.1-fpm
이미지를 사용하지만 PHP 버전이 symfony 프로젝트 요구 사항을 충족하는 경우 다른 FPM 이미지도 유효합니다.컴포저 종속성을 관리하기 위해 multi-stage builds을 사용하여 컴포저 공식 이미지에서 컴포저 바이너리를 복사합니다.
nginx 구성 만들기
프로젝트 루트에
nginx.conf
파일을 생성하고 다음 내용을 작성합니다.events {
worker_connections 1024;
}
http {
server {
server_name example.app;
root /var/www/app/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass example_php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/api_error.log;
access_log /var/log/nginx/api_access.log;
}
}
여기서 중요한 사항은 다음과 같습니다.
root /var/www/app/public
는 색인 파일이 있는 디렉토리를 정의합니다. fastcgi_pass example_php:9000
는 서버example_php
및 포트9000
를 사용하여 PHP 스크립트를 실행하도록 nginx에 지시합니다. 모두 합치기
nginx를 php와 통신하기 위해 다음 내용으로 프로젝트 루트에 파일
docker-compose.yaml
을 생성합니다.services:
example_nginx:
container_name: example_nginx
image: nginx:1.21.3-alpine
restart: on-failure
volumes:
- './:/var/www/app:ro'
- './nginx.conf:/etc/nginx/nginx.conf:ro'
ports:
- "9081:80"
depends_on:
- example_php
example_php:
container_name: example_php
build:
context: .
working_dir: /var/www/app/
volumes:
- './:/var/www/app/'
example_nginx
영상
컨테이너를 만드는 데 사용해야 하는 docker-compose 이미지를 나타냅니다. 더 많은 공식 이미지를 찾을 수 있습니다here.
재시작
컨테이너를 다시 시작해야 하는 시기를 나타냅니다. compose specification에서 자세한 정보를 찾을 수 있습니다.
볼륨
서비스 컨테이너에서 파일을 사용할 수 있도록 합니다. 이 경우 두 개의 볼륨을 사용합니다.
읽기 전용 모드에서 프로젝트 파일을
'./:/var/www/app:ro'
디렉토리에 바인딩하는 /var/www/app
읽기 전용 모드에서 nginx 구성 파일을
'./nginx.conf:/etc/nginx/nginx.conf:ro'
에 바인딩하는 /etc/nginx/nginx.conf
볼륨here에 대한 자세한 정보를 찾을 수 있습니다.
포트
컨테이너 포트
80
를 localhost9081
에 바인딩합니다. 이를 통해 URLhttp://localhost:9081
을 사용하여 symfony 응용 프로그램에 액세스할 수 있습니다.포트에 대한 자세한 정보를 찾을 수 있습니다here.
의존하다
이 서비스가 서비스에 종속되어 있음을 나타냅니다
example_php
. example_php
를 fastcgi_pass
서버로 사용하도록 nginx를 구성했음을 기억하십시오.depends_on
here에 대한 자세한 정보를 찾을 수 있습니다.example_php
문맥
Dockerfile이 있는 디렉터리의 경로를 정의합니다. 이 경우 동일한 디렉토리에 Dockerfile과 docker-compose.yml이 모두 있으므로
.
를 간단하게 사용합니다.빌드 구성에 대한 자세한 정보를 찾을 수 있습니다here.
working_dir
docker exec
를 사용하여 응용 프로그램 명령 실행을 단순화하기 위해 응용 프로그램 루트 디렉토리를 작업 디렉토리로 설정합니다.볼륨
이 서비스에서는 캐시 생성 및 설치 종속성과 같은 쓰기 작업을 허용하기 위해 읽기 및 쓰기 모드에서 모든 애플리케이션 파일을 사용할 수 있도록 합니다.
앱 실행
앱을 실행하려면
docker-compose up
를 실행하고 URLhttp://localhost:9081
을 사용하여 앱에 액세스하기만 하면 됩니다.
Reference
이 문제에 관하여(Symfony 프로젝트용 docker-compose 설정 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gricob/how-to-setup-docker-compose-for-symfony-projects-47kn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)