이 글에서는 주로 Dockerfile 파일을 사용하여 PHP 프로젝트를 배포하는 방법에 대한 관련 지식을 소개합니다. 환경 배포는 개발 환경이든 프로덕션 환경이든 항상 큰 문제였지만 Docker는 개발 환경과 프로덕션 환경을 결합합니다. 정량적인 패키징이 일관된 환경을 제공하는 것이 모두에게 도움이 되기를 바랍니다.
(추천 튜토리얼: PHP 비디오 튜토리얼)
/project_name
|-- /dist #--- 프로젝트 컴파일 후 디렉토리 출력
|--/ config # --- 구성 파일 디렉터리
|---|
|---|-- Dockerfile #--- Dockerfile 파일
|---|-- nginx.conf #--- nginx 구성 파일
nginx.conf 파일
# 从ubuntu镜像中构建应用 FROM ubuntu:latest # 设置镜像的制作者 MAINTAINER congjiang # 安装nginx + php-fpm7.4 RUN apt-get update && apt-get upgrade && apt-get install -y nginx php7.4-fpm vim # 上一条命令安装nginx和fpm # nginx 默认安装路径 /etc/nginx/ # php-fpm 默认安装路径 /etc/php/fpm/ # nginx配置文件存放目录 /etc/nginx/conf.d/ # nginx默认项目路径 /var/www/html/ # 在上传目录之前,可以先删除旧项目代码 # RUN ["rm", "-rf", "/var/www/project_name/"] # 项目文件上传, 把当前目录下的所有文件上传到/var/www/project_name目录下 COPY ./dist/ /var/www/project_name/ # 把当前项目的nginx.conf配置文件上传到/etc/nginx/conf.d/目录下 COPY ./config/nginx.conf /etc/nginx/conf.d/default.conf # 容器运行时启动应用 # php-fpm7.4 -D : 启动fpm并在后台运行 # nginx -g 'daemon off;' : 启动nginx, 前台执行, 并保持进程常驻, 避免docker容器启动后就自动关闭了 CMD php-fpm7.4 -D && nginx -g 'daemon off;'
# 在项目project_name目录下执行命令 docker build -f config/Dockerfile -t myproject:latest . # 注: 最后的参数表示路径, . : 表示当前目录下 # -f 指定Dockerfile文件所在目录, 如果是相对路径,则从当前目录下查找 # -t 重新指定镜像的名称和标签 <name>:<tag>
# 启动镜像 docker run -itd -p 80:8080 myproject:latest # --name <name> 为启动的容器指定名称,不指定会默认随机一个名称 # -p 访问的端口:镜像内程序的端口 # -d 表示当前容器在后台运行 # -it 指定要启动的镜像名称和标签 <name>:<tag> # -v 本地路径:镜像内的路径 可以将本地路径和容器内的路径映射,可以即时修改文件即时生效,方便测试 # -v 命令可以有多条 # --rm 当前容器退出后将自动删除 # eg: -v E:/logs/:/var/logs/nginx/ 把nginx的日志文件映射到本地
참고: nginx + php-fpm 여기에 환경이 구축되었습니다. 이미 완료되었습니다.
실행 중인 컨테이너를 시작한 후 로컬 브라우저를 엽니다: http://localhost/ 그러면 액세스할 수 있습니다.
# 查看正在运行的容器 docker ps # CONTAINER ID IMAGE ... # 01f82e69c455 myproject ... docker exec -it 01f82e69c455 /bin/bash # -it 需要连接的容器的CONTAINER ID # /bin/bash 当前参数必须的
다시 시작 프로젝트를 빌드할 때마다 새로운 이미지 파일이 생성됩니다
지정된 이름과 라벨이 이미지 파일 빌드 시 원본 이미지와 동일하면 원본 이미지는 삭제되지 않고 < none>:
# 已找到相关命令解决上面两个问题, 在创建相同名称的新镜像文件时,避免旧镜像残留 # 可以先删除旧镜像文件 docker rmi -f <name>:<tag> # 当前命令可以强制删除指定名称和tag的镜像文件
# 删除运行的容器 docker rm -f <name> # -f 强制删除,如果容器正在运行也会被删除 # -v 删除当前容器挂载的数据卷 # 删除所有没有运行的容器 docker rm $(docker ps -a -q) # 删除本地镜像文件 docker rmi -f <name>:<tag>
1, ubuntu + nginx + php-fpm7.4 버전의 운영 환경
이미지 가져오기 명령:
docker pull freedomx20/nginx-fpm7.4:1.0
docker 이미지 창고:
Docker Hub(ubuntu + nginx + php-fpm7.4 환경)
https://hub.docker.com/r/freedomx20/nginx -fpm7.4
( 추천 튜토리얼: PHP 비디오 튜토리얼)
위 내용은 Dockerfile 파일을 사용하여 PHP 프로젝트를 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!