- 浏览: 834916 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xieye:
jetty插件有好几个版本,1.6,1.7,1.8
我选的是用 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
还有,
注:第2部分时,需要先安装jetty,我自己在安装过程 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
说明一下:实际使用中,导入时我并没有错误。2、我把eclips ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
其实还是有一些先决条件的。1是外部环境,2是进步是阶段性的(意 ...
(转载文章)如何愉悦起来:一位精神治疗师的见解 -
mandy_yanzi:
我都已经饿7天了坚持为了我的衣衣
身体健康的问题
使用docker建立php多版本共存的环境
本人原创文章,转载请注明出处。注意,本文的开发环境是win10家庭版,使用docker-toolbox。
当前日期:2019-01-12
概述
假设现在本机同时维护两个项目,一个必须使用php5.6,一个必须使用7.2,那么怎么办呢?
可以使用phpstudy进行切换。
能不能不切换,共存?
说明:docker-toolbox应该创建好后新建虚拟机
方法
https://www.ibm.com/developerworks/community/blogs/jfp/entry/Using_Docker_Machine_On_Windows?lang=en
docker-machine create -d virtualbox --virtualbox-memory=4096 --virtualbox-cpu-count=2 --virtualbox-disk-size=50000 dev
下载安装
https://github.com/xieye114/docker_multiple_php
里面有具体的安装步骤。
2019 01 16 修改,添加了beanstalkd 队列的镜像 Dockerfile,方便php使用。
文件说明
docker项目的包含内容:
这时可以使用docker。我把补充说明写在前面,最后是配置文件。
-- services下面的各个容器,实际生成的镜像名 = 文件夹名_服务名,例如服务php56-fpm的镜像名是 build_php56-fpm, 我把docker-composer.yml这个文件,放在build文件夹中。即,这个镜像名是自动生成的。
-- services下面的各个容器,实际生成的容器名 = 文件夹名_服务名_1,例如服务php56-fpm的容器名是 build_php56-fpm_1,这个容器名也是自动生成的。
-- build命令,指明此服务从哪个镜像生成。那个目录下有Dockerfile文件。
-- ports:主机端口:容器端口
-- links:服务名:在本容器里的别名,这个特别重要,
举例;想在php56-fpm容器里访问mysql,应该使用别名访问,即冒号右边的名称。特别是写php程序,nginx配置等等,可以把别名理解为ip,理解为host名。
-- depends_on: 容易理解,本容器依赖与哪些容器,即那些容器先启动,本容器后启动。
-- volumes:容器外目录:容器内目录,可以文件映射,也可以目录映射,还可以指定访问方式,可读写。
-- restart:当失败时怎么做,这个不重要。
-- command:当启动容器后,自动执行的命令。
域名映射
修改windows10的hosts文件
按照如上配置,同时取消virtualbox和windowd宿主机的所有端口映射,除了22端口。
此时,可以把phpstudy和docker一起打开,根据不同的域名共同访问项目!
在windows里访问mysql,只需访问主机192.168.99.100的mysql即可。
要点
-- 因为有多版本的php,所以,定义了两个端口,但在nginx里,不需要指明不同的端口。因为已经指定了主机名。因为端口映射是为了宿主机有统一定义的不同端口。每个容器相当于每个主机,可以有自己端口哪怕同样。
以下是nginx 配置文件的部分内容
-- 实际使用php项目时,通常nginx的docment_root会设置在项目的下一级或下两级,不直接设置为项目目录。
-- 修改docker-composer.yml 文件,只需重启docker-compose down,再docker-compose up -d 即可。
-- 修改Dockerfile,则必须停止后,删除那个镜像,然后docker-compose build。所以尽量尝试改动 docker-composer.yml,不行的话再改Dockerfile。
-- mysql这个软件,为什么我把配置文件放在Dockerfile里,且使用COPY这个命令,很无奈,因为mysql软件对配置文件权限要求特别高,做映射好像不行,这样的话,每次修改mysql配置文件,都得重新build安装镜像。而其他几个软件,直接在windows下修改配置文件,然后重启docker-compose即可,非常便利。
-- mysql重新安装的话,需要先自行备份所有数据库,然后删除所有 data/下的文件,然后重装。不删除会导致安装失败。
目录说明
本示例项目中,目录按如下方式设置:
配置文件
使用docker-composer 会更方便。这里给出一份配置做参考。
说明:此文件已放入github,可能会有更新,但此处就不更新了。
docker-composer.yml
本人原创文章,转载请注明出处。注意,本文的开发环境是win10家庭版,使用docker-toolbox。
当前日期:2019-01-12
概述
假设现在本机同时维护两个项目,一个必须使用php5.6,一个必须使用7.2,那么怎么办呢?
可以使用phpstudy进行切换。
能不能不切换,共存?
说明:docker-toolbox应该创建好后新建虚拟机
方法
https://www.ibm.com/developerworks/community/blogs/jfp/entry/Using_Docker_Machine_On_Windows?lang=en
docker-machine create -d virtualbox --virtualbox-memory=4096 --virtualbox-cpu-count=2 --virtualbox-disk-size=50000 dev
下载安装
https://github.com/xieye114/docker_multiple_php
里面有具体的安装步骤。
2019 01 16 修改,添加了beanstalkd 队列的镜像 Dockerfile,方便php使用。
文件说明
docker项目的包含内容:
- nginx
- redis
- mysql
- php56
- php72
这时可以使用docker。我把补充说明写在前面,最后是配置文件。
-- services下面的各个容器,实际生成的镜像名 = 文件夹名_服务名,例如服务php56-fpm的镜像名是 build_php56-fpm, 我把docker-composer.yml这个文件,放在build文件夹中。即,这个镜像名是自动生成的。
-- services下面的各个容器,实际生成的容器名 = 文件夹名_服务名_1,例如服务php56-fpm的容器名是 build_php56-fpm_1,这个容器名也是自动生成的。
-- build命令,指明此服务从哪个镜像生成。那个目录下有Dockerfile文件。
-- ports:主机端口:容器端口
-- links:服务名:在本容器里的别名,这个特别重要,
举例;想在php56-fpm容器里访问mysql,应该使用别名访问,即冒号右边的名称。特别是写php程序,nginx配置等等,可以把别名理解为ip,理解为host名。
-- depends_on: 容易理解,本容器依赖与哪些容器,即那些容器先启动,本容器后启动。
-- volumes:容器外目录:容器内目录,可以文件映射,也可以目录映射,还可以指定访问方式,可读写。
-- restart:当失败时怎么做,这个不重要。
-- command:当启动容器后,自动执行的命令。
域名映射
修改windows10的hosts文件
127.0.0.1 www.t1.com 127.0.0.1 www.t2.com 127.0.0.1 www.t3.com 127.0.0.1 www.t4.com 127.0.0.1 www.t5.com 192.168.99.100 www.d1.com 192.168.99.100 www.d2.com
按照如上配置,同时取消virtualbox和windowd宿主机的所有端口映射,除了22端口。
此时,可以把phpstudy和docker一起打开,根据不同的域名共同访问项目!
在windows里访问mysql,只需访问主机192.168.99.100的mysql即可。
要点
-- 因为有多版本的php,所以,定义了两个端口,但在nginx里,不需要指明不同的端口。因为已经指定了主机名。因为端口映射是为了宿主机有统一定义的不同端口。每个容器相当于每个主机,可以有自己端口哪怕同样。
以下是nginx 配置文件的部分内容
location ~ \.php { include fastcgi_params; fastcgi_pass php56-fpm:9000; fastcgi_index index.php;
location ~ \.php { include fastcgi_params; fastcgi_pass php72-fpm:9000; fastcgi_index index.php;
-- 实际使用php项目时,通常nginx的docment_root会设置在项目的下一级或下两级,不直接设置为项目目录。
-- 修改docker-composer.yml 文件,只需重启docker-compose down,再docker-compose up -d 即可。
-- 修改Dockerfile,则必须停止后,删除那个镜像,然后docker-compose build。所以尽量尝试改动 docker-composer.yml,不行的话再改Dockerfile。
-- mysql这个软件,为什么我把配置文件放在Dockerfile里,且使用COPY这个命令,很无奈,因为mysql软件对配置文件权限要求特别高,做映射好像不行,这样的话,每次修改mysql配置文件,都得重新build安装镜像。而其他几个软件,直接在windows下修改配置文件,然后重启docker-compose即可,非常便利。
-- mysql重新安装的话,需要先自行备份所有数据库,然后删除所有 data/下的文件,然后重装。不删除会导致安装失败。
目录说明
本示例项目中,目录按如下方式设置:
c:\code myapp\ build\ mysql\ Dockerfile docker.cnf mysql-file.cnf nginx\ Dockerfile nginx.conf conf.d\ myapp_code1.conf myapp_code2.conf certs\ php56\ Dockerfile php.ini php-fpm.conf sources.list php72\ Dockerfile php.ini php-fpm.conf sources.list redis\ Dockerfile data\ mysql\ redis\ logs\ mysql\ nginx\ php56-fpm\ php72-fpm\ redis\ workspace\ myapp_code1\ index.php myapp_code2\ index.php docker-compose
配置文件
使用docker-composer 会更方便。这里给出一份配置做参考。
说明:此文件已放入github,可能会有更新,但此处就不更新了。
docker-composer.yml
version: '3.2' services: php56-fpm: build: ./php56/ ports: - "9000:9000" links: - mysql-db:mysql-db - redis-db:redis-db depends_on: - mysql-db - redis-db volumes: - ../../workspace:/var/www:rw - ./php56/php.ini:/usr/local/etc/php/php.ini:ro # 当前php配置文件;可以拷贝修改php-dev.ini为想要的配置 - ./php56/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro - ../logs/php56-fpm:/var/log/php-fpm:rw - ./php56/sources.list:/etc/apt/sources.list:rw restart: always command: php-fpm php72-fpm: build: ./php72/ ports: - "9100:9100" links: - mysql-db:mysql-db - redis-db:redis-db depends_on: - mysql-db - redis-db volumes: - ../../workspace:/var/www:rw - ./php72/php.ini:/usr/local/etc/php/php.ini:ro # 当前php配置文件;可以拷贝修改php-dev.ini为想要的配置 - ./php72/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro - ../logs/php72-fpm:/var/log/php-fpm:rw - ./php56/sources.list:/etc/apt/sources.list:rw restart: always command: php-fpm nginx: build: ./nginx depends_on: - php56-fpm - php72-fpm links: - php56-fpm:php56-fpm - php72-fpm:php72-fpm volumes: - ../../workspace:/var/www:rw - ./nginx/conf.d:/etc/nginx/conf.d:ro - ./nginx/certs/:/etc/nginx/certs - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ../logs/nginx:/var/log/nginx ports: - "80:80" - "8080:8080" - "443:443" restart: always command: nginx -g 'daemon off;' mysql-db: build: ./mysql ports: - "3306:3306" volumes: - ../data/mysql:/var/lib/mysql:rw - ../logs/mysql:/var/lib/mysql-logs:rw environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: myapp MYSQL_USER: user MYSQL_PASSWORD: password restart: always command: "--character-set-server=utf8 --explicit_defaults_for_timestamp --innodb-flush-method=O_DSYNC --innodb-use-native-aio=0 " redis-db: build: ./redis ports: - "6379:6379" volumes: - ../data/redis:/data restart: always
发表评论
-
召唤神龙 - 安装 centos 8, php 8, mysql 8, laravel 8 的整套 php 运行环境
2020-11-27 16:26 709本文编写时间:2020-11-27 传说集齐龙珠可以召唤神 ... -
centos8 使用阿里镜像快速安装php7.4套件
2020-11-15 00:48 853centos8 使用阿里镜像快速安装php7.4套件 本文只 ... -
centos7 使用阿里镜像快速安装php7.4套件
2020-11-15 00:32 1256本文只考虑centos7 今日 2020-11-16 rem ... -
win10 安装docker
2020-11-14 11:26 392首先,需到docker官网注册,有个账号和密码。 1.进入d ... -
composer常用命令
2020-11-05 14:46 1481列出当前全局配置 composer config -l -g ... -
期待centos8+php8 + mysql8 + laravel8,8888
2020-10-29 19:24 521期待centos8+php8 + mysql8 目前主要使用 ... -
ubuntu 安装 php7.4以及各类插件
2020-10-24 13:20 1130ubuntu 安装 php7.4以及各类插件 安装系统 最近 ... -
宝塔定义站点
2020-02-24 10:41 2宝塔定义站点。 1111111111111111111111 ... -
让php-fpm以root账号运行
2020-02-19 21:41 821一般来说,我们没有这种需求,但是当需要时, 可以让php-fp ... -
将代码部署到coding.net
2020-01-10 14:20 648coding.net 是一个git仓库,有免费有收费。 首先 ... -
php部署工具deployer技巧 - vendor目录创建
2020-01-06 12:06 911deployer是个好东西,可是每次都composer ,其实 ... -
自定义redis多个实例
2020-01-04 01:17 650假如多个项目部署到同一台服务器,有时会被redis的各项目前缀 ... -
推荐使用php的部署工具 deployer
2020-01-03 16:48 921php部署代码可以使用 https://deployer.or ... -
使用composer 类库 cachetool 清除opcache 的缓存
2020-01-03 16:38 966php的生产服务器上,需要把opche打开。 但有时,会被缓 ... -
laravel容器学习体会
2019-12-31 15:11 673根据文档与实测结果 假设我在app下建一个Services目 ... -
phalcon 自定义超强日志类
2019-12-18 10:00 833phalcon自带的日志文件类,有两个麻烦之处。 1、路径不能 ... -
自定义后台的使用
2019-12-18 05:22 424如果自己写后台,保存用户的表单请求值 所有的情况如下: 1 ... -
phalcon 自定义事件使用的多种方式
2019-12-16 20:43 781方法1:官方文档的方式。 这是控制器: public ... -
phalcon对控制器返回值的使用以输出json
2019-12-16 19:17 835在phalcon里,控制器的Action的方法的返回值没啥用。 ... -
phalcon数据库DB使用实例
2019-12-12 17:12 700整理了一下phalcon的db使用,写了个demo。 ...
相关推荐
docker安装PHP5.6镜像文件,mac下成功运行起来
使用Docker建立Mysql集群使用Docker建立Mysql集群使用Docker建立Mysql集群使用Docker建立Mysql集群
Docker用于开发 Docker不仅用于部署,它还可以用于开发。 1、为什么要在开发中使用Docker 主要有以下几个原因。...5)可以使用同一编程语言的多个版本 可以使用同一编程语言(如python, python, ruby, ruby,
docker 快速搭建php环境 docker包,一键启动开发环境,docker 快速搭建php环境 docker包,一键启动开发环境
安装docker-compose最新版本
要先用git里面的sh,就可以正常使用linux模拟环境,在用...Docker windows版本Docker windows版本Docker windows版本Docker windows版本Docker windows版本Docker windows版本Docker windows版本Docker windows版本
docker下 搭建 PHP+mysql+redis+nginx 开发环境, 并实现一键自动化部署,保证了在各个平台上的一致性,既方便又高效。
本资源包提供的是Ubuntu 20.10.12版本上的Docker和Docker Compose的离线安装包,这对于那些没有稳定网络连接或者需要在隔离环境中的服务器上安装这些工具的用户来说,非常实用。 首先,我们来看Docker。Docker CE...
docker for mac 历史版本适用inter 10.15以下
使用docker技术,用镜像产生容器,在一个虚拟机上搭建多套测试环境
可以在老的windows版本安装docker的工具,解决版本老旧且不能升级的问题,让cmd支持docker命令
本教程将详细解释如何使用docker-compose搭建一个包含PHP 7.4(集成Swoole和Swoole Loader扩展)以及MySQL 5.7的开发环境。 首先,让我们了解Docker。Docker是一种开源的应用容器引擎,它允许开发者打包他们的应用...
Docker Desktop 是一款强大的开发工具,使开发者能够在 Windows 环境中高效构建、共享和运行容器化应用程序。...Docker Desktop 定期更新,提供最新的功能和安全补丁,确保用户始终使用最新版本的 Docker 工具。
docker-1.12版本rpm包,此版本docker已绝迹于江湖,本人踏破山巅,寻得此物,望诸君珍惜!
本教程将详细介绍如何在离线环境下使用RPM包安装Docker CE(Community Edition)版本20.10.21。 首先,我们需要了解Docker CE 20.10.21的离线安装过程涉及多个RPM包,总计28个。这些包包含了Docker服务本身及其依赖...
使用4.4.4版本Windows Docker,开发者可以享受到容器化带来的诸多好处,如快速部署、一致的运行环境、资源利用率的提升等。此外,通过Docker Compose,可以方便地管理和部署复杂的多容器应用,简化开发流程。对于...
支持内网环境docker安装
docker历史版本下载
docker版本26.1.2,docker-compose版本v2.11.0。 1.把docker_compose_install-new文件夹放在任意路径; 2.chmod -R 777 install.sh 3.执行./install.sh 兼容:CentOS7.6、麒麟V10服务器版。