windows10+docker编排实现php多版本共存之自用dnmp开发环境分享
我的自己用的dnmp开发环境一直是php7.4单版本运行环境,后面有php8.1.10最新版镜像出来身为一个phper就要下载下来跑一下,加上我又上传至码云、git上如果有人用了我这个环境可以需要其他版本及多版本运行,所以我就新增了个最新版本php8.1.10-fpm,更多版本也可以按这个套路来
直接进入步骤
我的docker容器配置目录都在C:\Users\htz\dockers里面
新增文件夹php8 (用来放php8.1.10的容器配置文件)
C:\Users\htz\dockers\php8
拉取、启动一个php8.1.10-fpm的临时容器(复制php配置文件用)
C:\Users\htz>docker pull php:8.1.10-fpm
8.1.10-fpm: Pulling from library/php
a2abf6c4d29d: Pull complete
c5608244554d: Pull complete
2d07066487a0: Pull complete
1b6dfaf1958c: Pull complete
4810cc4e8244: Pull complete
4ec287290423: Pull complete
b6ae9e23cd59: Pull complete
37c34eb562c0: Pull complete
19e84bf7fd0c: Pull complete
4fa88293240f: Pull complete
Digest: sha256:def6bdad9c31a723b903204ab2ec7f013765930026c3203bfdabf81b24b0aedf
Status: Downloaded newer image for php:8.1.10-fpm
docker.io/library/php:php:8.1.10-fpm
C:\Users\htz>docker run -d -v C:\Users\htz\dockers\nginx\www:/var/www/html -p 9000:9000 --name php81 php:8.1.10-fpm
bd1b130b93b3df4682f016714515b993d28ca4e5903226dddd434f761dd111fe
把容器php8里面的etc目录拷贝至宿主机的php8目录中
C:\Users\htz>docker cp php8:/usr/local/etc/ C:\Users\htz\dockers\php8\
如下目录结构:
C:\Users\htz\dockers>cd php8
C:\Users\htz\dockers\php8>dir
驱动器 C 中的卷没有标签。
卷的序列号是 82E1-16B0
C:\Users\htz\dockers\php8 的目录
2022/09/06 16:42 <DIR> .
2022/09/06 16:42 <DIR> ..
2022/09/02 05:20 <DIR> etc
0 个文件 0 字节
3 个目录 56,893,440,000 可用字节
C:\Users\htz\dockers\php8>cd etc
C:\Users\htz\dockers\php8\etc>dir
驱动器 C 中的卷没有标签。
卷的序列号是 82E1-16B0
C:\Users\htz\dockers\php8\etc 的目录
2022/09/02 05:20 <DIR> .
2022/09/02 05:20 <DIR> ..
2022/09/02 05:20 1,195 pear.conf
2022/09/02 05:20 <DIR> php
2022/09/02 05:20 5,345 php-fpm.conf
2022/09/02 05:20 5,350 php-fpm.conf.default
2022/09/02 05:20 <DIR> php-fpm.d
3 个文件 11,890 字节
4 个目录 56,893,440,000 可用字节
停止并删除掉临时php8.1.10-fpm容器
C:\Users\htz>docker stop php81 && docker rm php81
php81
php81
然后就是正式启动php8.1.10-fpm容器 并映射刚刚cp出来的php8.1.10的配置文件就ok了
我这里就不测了,有兴趣可以翻阅我单独启动php7.4的教程文章。
下一步
直接docker compose编排php8.1.10-fpm版本容器实现跟php7.4版本共存
1.在docker-compose.yml里面添加php81编排信息
(其他我就省略了,有兴趣的看我之前的文章,或者直接点进我的git地址,我会我底部留链接)
#版本号
version: '2.2'
services:
...
nginx:
image: nginx
ports:
- "80:80"
- "8080:8080"
- "8081:8081"
container_name: "nginx-server"
volumes:
- C:\Users\htz\dockers\nginx\conf\nginx.conf:/etc/nginx/nginx.conf
- C:\Users\htz\dockers\nginx\logs:/var/log/nginx
- C:\Users\htz\dockers\nginx\www:/usr/share/nginx/html
links:
- "php74:7.4-fpm"
- "php81:8.1.10-fpm"
networks:
- dev
php74:
build:
context: ./
dockerfile: php.dockerfile
#image: php:7.4-fpm
privileged: true
ports:
- "9000:9000"
container_name: "php74"
volumes:
- C:\Users\htz\dockers\nginx\www:/var/www/html
- C:\Users\htz\dockers\php\conf\www.conf:/usr/local/etc/php-fpm.d/www.conf
- C:\Users\htz\dockers\php\conf\php.ini:/usr/local/etc/php/php.ini
networks:
- dev
php81:
build:
context: ./
dockerfile: php81.dockerfile
#image: php:8.1.10-fpm
privileged: true
ports:
- "9001:9000"
container_name: "php81"
volumes:
- C:\Users\htz\dockers\nginx\www:/var/www/html
- C:\Users\htz\dockers\php8\etc:/usr/local/etc
networks:
- dev
networks:
dev:
driver: bridge
pro:
driver: bridge
ps :
主要端口ports的变化哦
2.新增php81.dockerfile文件夹,安装一下依赖扩展,composer管理工具等
FROM php:8.1.10-fpm
# 安装必要的 php 依赖包
RUN apt-get update \
&& apt-get install -qq git curl libmcrypt-dev libjpeg-dev libpng-dev libfreetype6-dev libbz2-dev \
&& apt-get clean
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
&& php -r "unlink('composer-setup.php');"
# 安装 php 扩展 mcrypt zip gd
RUN docker-php-ext-install pdo pdo_mysql
3.最后直接在命令提示符cmd中执行构建
在C:\Users\htz\dockers>目录中执行docker-compose命令构建项目
docker-compose up -d
...
就ok了,测试效果截图我放在文章头部了,
有兴趣或想了解更多可以访问下面的git链接
我的自用dnmp码云地址:
https://gitee.com/houtizong/dockers
相关文章