Docker 学习系列1 使用 Docker 快速实现多版本PHP切换

多谢此文:https://blog.eriksen.com.br/en/docker-image-multi-version-php-development

最近一个新的后台API项目需要运行在PHP5.3环境中,而无论是本地还是测试服务器都安装的是PHP7.x
PHP5.3官方已经不维护了,通过源码安装配置也很麻烦,我又不想污染现有的环境。
所以想到了docker
我觉得docker适合以下情况:

  1. 运行特定的开发环境,比如要运行两个项目。一个要求PHP5.6,一个PHP7.0。不想来回切换。
  2. 喜欢尝鲜,折腾,docker有很强的隔离性。在docker里搞坏也不会破坏本地,用到的时候docker run 启动镜像和容器,不想用了docker rm 删掉即可。

新项目是基于 ThinkPHP3.2
想通过docker跑起来,可以按如下步骤:

  1. 安装 docker,略
    记得一定要切换为国内源,不然速度巨慢,还容易报错,推荐免费的https://www.daocloud.io/mirror#accelerator-doc
  2. 下载镜像
    docker pull eriksencosta/php-dev
  3. 项目目录是已经存在的
    路径是 D:/projects/live-ranking-api
  4. 运行容器 其中参数:-p 端口映射 -v 挂载目录,冒号前是宿主机目录,后面的是容器内目录
    -t -i 参数 表示已交互方式运行容器,运行成功后会执行 /bin/bash 就是进去终端
    docker run -t -i -p 8088:80 -v D:/projects/live-ranking-api:/var/www -d "eriksencosta/php-dev:latest" /bin/bash
image.png
  1. 打开浏览器输入 localhost:8088 正常的话项目已经成功跑起来了
  2. 切换PHP版本,在容器内的终端内输入 phpenv命令 列出当前可选择的PHP版本
# phpenv versions
  5.3
  5.3.29
  5.4
  5.4.35
  5.5
  5.5.19
  5.6
* 5.6.3 (set by /opt/phpenv/version)

执行 phpenv global 5.4

# phpenv global 5.4
# php -v
PHP 5.4.35 (cli) (built: Dec 14 2014 00:35:12)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.6, Copyright (c) 2002-2014, by Derick Rethans

启动nginx

# webserver start
Starting PHP-FPM (PHP version 5.3) server.
Starting Nginx server.
Done.

参考:
https://hub.docker.com/r/eriksencosta/php-dev/
https://github.com/eriksencosta/silex-docker-example

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,270评论 19 139
  • 今天开始读渡边淳一的《情人》,之前在实体书店和kindle还有图书馆都见到过推荐,每次都是一扫而过,因为在年纪稍小...
    言语谓昭阅读 1,432评论 0 0
  • 所学目录 011:MBTI测试 | 认识自己是一切管理的前提012:人格特质 | 你有却不自知的优势013:达克效...
    xionghuisquall阅读 2,767评论 0 2
  • 有些人,有些事,何必执着,何必固执呢! 凡事不必太在意,想通了,想开了,也就都过去了。 如执意的要去固执,执着的话...
    久伴红尘阅读 2,738评论 0 1
  • 我是个不会表达感情的女孩,但我却是个会哭的女孩,亲情对我尤其重要。 老妈告诉我这个消息的时候,是在2 天...
    玉小茹阅读 4,032评论 1 1

友情链接更多精彩内容