Docker搭建开发环境(Nginx+MySQL+PHP)
注意事项
1、像MySQL配置文件、Nginx配置文件、网站根目录这种比较经常操作的需要先使用
docker cp将文件从容器里复制到主机目录,docker run的时候直接挂载目录就可以了2、
docker runMySQL和Nginx的时候注意使用--link实现容器之间通信3、运行容器的时候注意使用
--ip固定容器IP
安装 MySQL
mysql 需要挂载的目录
/var/lib/mysql
/etc/mysql/conf.d
挂载详情
# 主机目录:容器目录
~/web/mysql/data:/var/lib/mysql
~/web/mysql/conf:/etc/mysql/conf.d
文件备份
将mysql的配置文件,自带数据库,sock配置 复制到主机目录
# docker cp container_ID:容器目录 主机目录
docker cp 2d19ae0acd5d:/var/lib/mysql ~/web/mysql/data
docker cp 2d19ae0acd5d:/etc/mysql/conf.d ~/web/mysql/conf
目录分解
docker run
--name mysql # 指定容器名称
-e MYSQL_ROOT_PASSWORD=root # 初始化root用户的密码为root
-p 3307:3306 # 将容器的3306端口映射到主机的3307端口
--privileged=true # 给容器加上特定的权限,否则可能会出现常见容器失败的情况
-v ~/web/mysql/data:/var/lib/mysql # 挂载目录 mysql数据文件
-v ~/web/mysql/conf:/etc/mysql/conf.d # 挂载目录 mysql配置文件
--restart=always # 设置失败自动重启 可写为 --restart=on-failure:5 最多重启五次
-d mysql:5.7
命令实现
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --privileged=true -v ~/web/mysql/data:/var/lib/mysql -v ~/web/mysql/conf:/etc/mysql/conf.d --restart=always -d mysql:5.7
安装PHP
需要挂载的目录
/var/www/html
挂载详情
# 主机目录:容器目录
~/web/www/:/var/www/html
文件备份
# docker cp container_ID:容器目录 主机目录
docker cp 7da668050b8a:/var/www/html /docker-data/web/www
目录分解
docker run
--name php
-p 9000:9000
--privileged=true
-v ~/web/www/:/wwwroot
--link mysql:mysql # 使用link实现两个容器之间的通信
--restart=always
-d
php:7.2-fpm
命令实现
docker run --name php -p 9000:9000 --privileged=true -v ~/web/www/:/wwwroot --link mysql:mysql --restart=always -d php:7.2-fpm
扩展安装
# 进入容器执行命令安装扩展
docker-php-ext-install [扩展名称]
# 安装GD库
apt update #更新软件源
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev #安装各种库
docker-php-source extract #解压源码
cd /usr/src/php/ext/gd #gd源码文件夹
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2 #准备编译
docker-php-ext-install gd #编译安装
php -m | grep gd
docker restart [container ID]#重启容器
安装Nginx
需要挂载的目录
/usr/share/nginx/html
/etc/nginx/conf.d
挂载详情
# 主机目录:容器目录
~/web/www:/usr/share/nginx/html
~/web/nginx/conf.d:/etc/nginx/conf.d
文件备份
# docker cp container_ID:容器目录 主机目录
docker cp e0babc8a32ad:/usr/share/nginx/html ~/web/www
docker cp e0babc8a32ad:/etc/nginx/conf.d ~/web/nginx/conf.d
目录分解
docker run
--name nginx
-p 8080:80
--privileged=true
-v ~/web/www:/wwwroot
-v ~/web/nginx/conf.d:/etc/nginx/conf.d
--link php:php
--restart=always
-d
nginx
命令实现
docker run --name nginx -p 8080:80 --privileged=true -v ~/web/www:/wwwroot -v ~/web/nginx/conf.d:/etc/nginx/conf.d --link php:php --restart=always -d nginx
Nginx配置文件参考
server {
listen 80;
server_name tplay.yulongcode.com;
root /wwwroot/tplay/public; # 项目在容器里的目录
index index.php index.html index.htm;
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
error_page 500 502 503 504 /50x.html;
location ~ \.php$ {
fastcgi_pass PHP容器IP:PHP端口;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Docker搭建开发环境(Nginx+MySQL+PHP)的更多相关文章
- 使用 docker 搭建开发环境
作为一个 freelancer,经常能够接到很多的开发工作,这些金主,有喜欢 PHP 的,有习惯撒手不管的:有偏好 sqlite 的,也有喜欢 PG 的,我甚至见过 mysql.PG 一起使用的项目: ...
- 利用Docker搭建开发环境
一. 前言 随着平台的不断壮大,项目的研发对于开发人员而言,对于外部各类环境的依赖逐渐增加,特别是针对基础服务的依赖.这些现象导致开 发人员常常是为了简单从而直接使用公有的基础组件进行协同开发,在出现 ...
- Docker 搭建开发环境
本文介绍如何将Docker集成到开发环境,自动构建应用,并使容器拥有独立的内网IP为开发人员提供服务. 术语解释 Docker镜像:一个不可修改的"模板",每个代码版本对应一个镜像 ...
- [转]利用Docker构建开发环境
利用Docker构建开发环境 Posted by makewonder on 2014 年 4 月 2 日 最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境, ...
- 利用Docker构建开发环境
最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环 ...
- 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)
Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...
- 深入浅出Docker(五):基于Fig搭建开发环境
概述 在搭建开发环境时,我们都希望搭建过程能够简单,并且一劳永逸,其他的同事可以复用已经搭建好的开发环境以节省开发时间.而在搭建开发环境时,我们经常会被复杂的配置以及重复的下载安装所困扰.在Docke ...
- Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中 ...
- Mac下docker搭建lnmp环境 + redis + elasticsearch
之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...
随机推荐
- 阿里一面CyclicBarrier和CountDownLatch的区别是啥
引言 前面一篇文章我们<Java高并发编程基础三大利器之CountDownLatch>它有一个缺点,就是它的计数器只能够使用一次,也就是说当计数器(state)减到为 0的时候,如果 再有 ...
- LevelDB 源码解析之 Random 随机数
GitHub: https://github.com/storagezhang Emai: debugzhang@163.com 华为云社区: https://bbs.huaweicloud.com/ ...
- Android Studio 之创建自定义控件
•前言 常用控件和布局的继承结构,如下图所示: 可以看到,我们所用的所有的控件都是直接或者间接的继承自View的: 所用的所有布局都是直接或者间接继承自ViewGroup的: View 是 Andro ...
- .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate
在ASP.NET MVC 中使用Jntemplate 上一篇我们详细介绍了jntemplate的标签语法,本篇文章将继续介绍如何在ASP.NET MVC 中使用Jntemplate. 一.使用Jnte ...
- 201871030131-谢林江 实验二 个人项目—《D{0-1} KP》项目报告
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.学习编写PSP2.完成个人项目实验要求3.在Github建仓 这个作业在哪些方面帮助我实现学习目标 1.首次编 ...
- Java中获取类的运行时结构
获取运行时类的完整结构 通过反射获取运行时类的完整结构 Field(属性).Method(方法).Constructor(构造器).Superclass(父类).Interface(接口).Annot ...
- Linux 文件基本属性与目录管理 (chmod chown ls cp mv cat )
Linux 文件基本属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限. 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的 ...
- Unix ls UVA - 400
The computer company you work for is introducing a brand new computer line and is developing a new ...
- 数据结构之队列(JavaScript描述)
队列数据结构 队列遵循先进先出原则的一组有序的项.对可在尾部添加新元素并从顶部移除元素.最新添加的元素必须排在队列的末尾 队列类似栈的例子 创建队列 创建一个类表示队列 队列内应该有一些方法 添加 ...
- openpyxl 库
1. 简介与安装 2.具体示例 2.1 获取workbook与sheet对象 2.2 访问单元格及其值 2.3 写数据 2.4 设置样式 1. 简介与安装 openpyxl 简介 openpyxl 是 ...