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 str_pad 函数用法简介
Jul 11 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
PHP 图像尺寸调整代码
May 26 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
php实现的二分查找算法示例
Jun 20 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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下MAIL的另一解决方案
2006/10/09 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
js opener的使用详解
2014/01/11 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
python爬虫之百度API调用方法
2017/06/11 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
物业管理个人自我评价
2013/11/08 职场文书
经理职责范文
2013/11/08 职场文书
探矿工程师自荐信
2014/01/24 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
Java版 简易五子棋小游戏
2022/05/04 Java/Android