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 相关文章推荐
56.com视频采集接口程序(PHP)
Sep 22 PHP
PHP UTF8编码内的繁简转换类
Jul 20 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
zend Framework中的Layout(模块化得布局)详解
Jun 28 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
php导入导出excel实例
Oct 25 PHP
使用php清除bom示例
Mar 03 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
php生成QRcode实例
Sep 22 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php实现基于pdo的事务处理方法示例
Jul 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完整的日历类(CLASS)
2006/11/27 PHP
php中的三元运算符使用说明
2011/07/03 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
实例讲解Python中函数的调用与定义
2016/03/14 Python
python使用多进程的实例详解
2018/09/19 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
培训讲师邀请函
2014/01/10 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
写给老师的感谢信
2015/01/20 职场文书
休学证明范本
2015/06/19 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
Redis分布式锁Redlock的实现
2021/08/07 Redis
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA