Docker配置PHP开发环境教程


Posted in PHP onDecember 21, 2016

前言

笔者用的是mac开发,但是mac自带的php功能安装十分不方便,并且和线上的linux开发环境不一致。在没有用docker之前一直用vagrant配置的centos的php开发环境,但是自从有了docker之后,就不再用vagrant了。

配置自己的php镜像

首先在自己的任意一个目录下创建如下三个文件

run.sh

#!/bin/bash
/usr/sbin/php-fpm7.0
/usr/sbin/nginx
tailf /etc/apt/sources.list

sources.list

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

Dockerfile

FROM ubuntu:16.04
# ===========================
# 配置虚拟主机
# -v default:/etc/nginx/sites-enabled/default
# 配置程序目录
# -v web:/var/www/html
# 配置映射端口
# -p 8008:80
# ===========================
MAINTAINER chengtao "751753158@qq.com" 

ADD sources.list /etc/apt/sources.list
ADD run.sh /root/run.sh

RUN chmod +x /root/run.sh
RUN apt-get update 
RUN apt-get install -y php-fpm php-mysql nginx 
RUN sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/' /etc/php/7.0/fpm/php.ini
RUN mkdir -p /run/php/

EXPOSE 80 
CMD ["/bin/bash","/root/run.sh"]

执行命令

docker build -t d1studio:php-base:0.1 .

配置php mysql开发环境

mkdir -p ~/projects/php-app
cd ~/projects/php-app
mkdir mysql
mkdir www

www/index.php

<?php
phpinfo();

nginx.conf

server {
 listen 80 default_server;
 root /var/www/html;
 index index.html index.htm index.php;
 location / {
  try_files $uri $uri/ =404;
 }
 location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 }
}

docker-compose.yml

version: '2'
services:
 mysql:
 image: mysql:5.6
 volumes:
  - ./mysql/:/var/lib/mysql/
 ports:
  - "3307:3306"
 environment:
  - MYSQL_ROOT_PASSWORD=123456
 php-app:
 image: d1studio/php-base:0.1
 ports:
  - "8009:80"
 volumes:
  - ./nginx.conf:/etc/nginx/sites-enabled/default
  - ./www/:/var/www/html/
 links:
  - mysql

开启php的测试项目

#开启
docker-compose up
#关闭
docker-compose down

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
PHP安装攻略:常见问题解答(一)
Oct 09 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php中执行系统命令的方法
Mar 21 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
php批量删除操作(数据访问)
May 23 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
php对微信支付回调处理的方法
Aug 23 PHP
php函数式编程简单示例
Aug 08 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
PHP符合PSR编程规范的实例分享
Dec 21 #PHP
利用PHP生成CSV文件简单示例
Dec 21 #PHP
PHP实现支付宝即时到账功能
Dec 21 #PHP
简单实现PHP留言板功能
Dec 21 #PHP
PHP未登录自动跳转到登录页面
Dec 21 #PHP
PHP单例模式详解及实例代码
Dec 21 #PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 #PHP
You might like
PHP新手上路(十二)
2006/10/09 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
计算机大学生的自我评价
2013/10/15 职场文书
翻译专业应届生求职信
2013/11/23 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
回门宴父母答谢词
2014/01/26 职场文书
个人承诺书格式
2014/06/03 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL
python实现手机推送 代码也就10行左右
2022/04/12 Python
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技