How to use Dockerfile files to deploy PHP projects
This article mainly introduces you to the relevant knowledge about using Dockerfile files to deploy PHP projects. Environment deployment has always been a big problem, whether it is a development environment or a production environment, but Docker will develop The environment and production environment are packaged in a lightweight manner to provide a consistent environment. Let's take a look at it together. I hope it will be helpful to everyone.
(Recommended tutorial: PHP video tutorial)
1. Current project structure
/ project_name
|-- /dist -- Dockerfile #--- Dockerfile file
|---|-- nginx.conf #--- nginx configuration file
nginx.conf file
2. Create a 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>
Copy after login
4. Use the image file and start the container# 在项目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的日志文件映射到本地
Copy after login
# 启动镜像 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的日志文件映射到本地
Note: The nginx php-fpm environment has been set up here.
After starting the running container, open the local browser: http://localhost/ and you can access it6. Problems that occur when building the project Every time the project is rebuilt, a new image file will be created5. Connect to the started image container
# 查看正在运行的容器 docker ps # CONTAINER ID IMAGE ... # 01f82e69c455 myproject ... docker exec -it 01f82e69c455 /bin/bash # -it 需要连接的容器的CONTAINER ID # /bin/bash 当前参数必须的Copy after login
- If you specify when building the image file, If the name and label are the same as the original image, the original image will not be deleted and will be renamed as
: image file - 7. Delete Container, delete the image file
# 已找到相关命令解决上面两个问题, 在创建相同名称的新镜像文件时,避免旧镜像残留 # 可以先删除旧镜像文件 docker rmi -f <name>:<tag> # 当前命令可以强制删除指定名称和tag的镜像文件
Copy after login
# 删除运行的容器 docker rm -f <name> # -f 强制删除,如果容器正在运行也会被删除 # -v 删除当前容器挂载的数据卷 # 删除所有没有运行的容器 docker rm $(docker ps -a -q) # 删除本地镜像文件 docker rmi -f <name>:<tag>
Command to pull the image:
docker pull freedomx20/nginx-fpm7.4:1.0
Docker Hub (ubuntu nginx php-fpm7.4 environment)
https://hub. docker.com/r/freedomx20/nginx-fpm7.4(Recommended tutorial:PHP video tutorial
)The above is the detailed content of How to use Dockerfile files to deploy PHP projects. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
