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 相关文章推荐
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
PHP程序员基本要求和必备技能
May 09 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
PHP实现的json类实例
Jul 28 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 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
域名查询代码公布
2006/10/09 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
JS实现多选框的操作
2020/06/24 Javascript
js实现3D旋转效果
2020/08/18 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
教师三严三实对照检查材料
2014/09/25 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书