• 技术文章 >后端开发 >php教程

    怎样利用Dockerfile文件部署PHP项目

    长期闲置长期闲置2022-07-25 17:48:43转载540
    本篇文章主要给大家介绍了关于利用Dockerfile文件部署PHP项目的相关知识,环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是Docker将开发环境和生产环境以轻量级方式打包,提供了一致的环境,下面一起来看一下,希望对大家有帮助。

    (推荐教程:PHP视频教程

    一、当前项目结构

    /project_name
    |-- /dist #--- 项目编译后输出的目录
    |-- /config #--- 配置文件目录
    |---|
    |---|-- Dockerfile #--- Dockerfile文件
    |---|-- nginx.conf #--- nginx配置文件

    nginx.conf文件

    二、创建Dockerfile文件

    # 从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 当前参数必须的

    六、 构建项目出现的问题

    # 已找到相关命令解决上面两个问题, 在创建相同名称的新镜像文件时,避免旧镜像残留
    # 可以先删除旧镜像文件
     
    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中文网其它相关文章!

    声明:本文转载于:脚本之家,如有侵犯,请联系admin@php.cn删除
    专题推荐:php
    上一篇:php7.2怎么连接oracle数据库?OCI8扩展的安装 下一篇:什么是接口?如何在PHP中使用接口编写优雅的代码?
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• php怎么求出数组中成绩不及格的个数• php7.2怎么连接oracle数据库?OCI8扩展的安装• PHP支持索引数组吗• php正则能不能匹配数组• php怎么给数组增加值后返回最新key
    1/1

    PHP中文网