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 adodb分页实现代码
Mar 19 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
PHP $_FILES函数详解
Mar 09 PHP
PHP速成大法
Jan 30 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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 远程关机实现代码
2009/11/10 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
Python fileinput模块使用介绍
2014/11/30 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
利用python画一颗心的方法示例
2017/01/31 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
水果超市创业计划书
2014/01/27 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
小区消防演习方案
2014/02/21 职场文书
党的生日演讲稿
2014/09/10 职场文书
大学生心理健康活动总结
2015/05/08 职场文书