加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-08-10 11:11:04 所属栏目:PHP教程 来源:互联网
导读:一、当前项目结构 /project_name |-- /dist #--- 项目编译后输出的目录 |-- /config #--- 配置文件目录 |---| |---|-- Dockerfile #--- Dockerfile文件 |---|-- nginx.conf #--- nginx配置文件 nginx.conf文件 二、创建Dockerfile文件 # 从ubuntu镜像中构建
  一、当前项目结构
  /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 当前参数必须的
 
  六、 构建项目出现的问题
  每次重新构建项目,都会新创建一个镜像文件
 
  如果构建镜像文件时,指定的name和标签与原来的镜像一样,则原来的镜像不会删除,会被更名为<none>:<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 环境)

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读