docker lamp
可以直接使用官方镜像搭建LAMP环境
从官方下载PHP+Apache镜像和MySQL两个镜像来组成(如:php:7.2.3-apache-stretch和mysql:5.7.21)
docker pull php:7.3.3-apache-stretch
docker pull mysql:5.7.21
官方下载的PHP+Apache镜像是没有安装PHP插件mysqli
/usr/local/bin/docker-php-ext-install mysqli
官方下载的PHP+Apache镜像Apache是没有开启rewrite
a2enmod rewrite
可以编写Dockerfile基于官方下载的PHP+Apache镜像执行以上两句命令,生成新的镜像文件方便日后使用
# dockerfile
FROM php:7.2.-apache-stretch RUN /usr/local/bin/docker-php-ext-install mysqli; \
a2enmod rewrite; CMD ["apache2-foreground"]
启动容器时主要要先启动mysql,需要设置root密码,另外可以设置数据库文件存储在宿主机器上,端口可以不映射,因为其他容器通过link方式使用数据库
再启动PHP+Apache,需要设置端口映射,指定通过link方式访问数据库,可以指定文件存储在宿主机器上
docker run -d -v C:/data/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql
docker run -d -p 80:80 -v C:/data/html:/var/www/html --link mysql:mysql php:7.2.3-apache-stretch
---------------------
作者:benimang
来源:CSDN
原文:https://blog.csdn.net/benimang/article/details/80515179
版权声明:本文为博主原创文章,转载请附上博文链接!
docker run -d -p 8881:80 --name we7_test --privileged=true --link mysql:mysql -v /var/www/we7_test/web:/var/www/html --restart=always php:7.2-apache
docker 运行 php:7.2-apache 容器
docker run -d -p 8881:80 --name we7_test --privileged=true --link mysql:mysql -v /var/www/we7_test/web:/var/www/html --restart=always php:7.2-apache
进入容器安装缺少的扩展:gd pdo
docker exec -it we7_test /bin/bash
apt-get update -y && apt-get install -y libpng-dev
docker-php-ext-install gd pdo pdo_mysql
退出容器,重启容器
exit
docker restart we7_test
浏览器访问
http://localhost:8881
docker run -d -p 10022:22 -p 8001:80 --name apache_php --link mysql_db:mysql_db -v /var/www/html:/usr/local/apache2/htdocs apache_php:v1
创建一个文件夹用于挂载数据库文件
mkdir /mysql_lamp
然后生成容器
docker run -d -p 33060:3306 -e mysqld -e MYSQL_ROOT_PASSWORD=test-e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=discuz -v /
mysql_lamp:/var/lib/mysql --name mysql_db mysql
命令详解:
1、mysqld,#启动mysql服务,必须
2、MYSQL_ROOT_PASSWORD,#设置mysql的root密码,必须
3、MYSQL_USER ,#添加用户,可选
4、MYSQL_PASSWORD,#为用户设置密码,可选
5、MYSQL_DATABASE,#设置生成容器时需要新建的数据库,可选
6、将宿主机的目录“/mysql_data”映射到容器的“/var/lib/mysql”目录,可选。这是因为默认情况下数据库的数据库文件和日志文件都会存放于容器的AUFS文件层,这不仅不使得容器变得越来越臃肿,不便于迁移、备份等管理,而且数据库的性能也会受到影响,因此建议挂载到宿主机的目录到容器内。
7、mysql:镜像名字
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p:端口映射
--name:生成容器的名字
Mysql
docker pull mysql:5.7
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你要设置的mysql密码 --name mysql57 mysql:5.7 //你要设置的mysql密码
Redis
docker pull redis
docker run -d -p 6379:6379 --name redis01 redis
PHP
docker pull mysql:7.2
docker run -d -v D:/docker_conf/www:/var/www/html -p 9000:9000 -p 9501:9501 --link mysql57:mysql --name php72 php:7.2-fpm
扩展
docker-php-ext-install pdo_mysql
docker-php-ext-install mysqli
php-redis扩展
1、进入php72容器 docker exec -it php72 bash
2、curl -L -o /tmp/redis.tar.gz phpredis/phpredis/archive/3.1.3.tar.gz //3.1.3=>版本可换
3、cd /tmp
4、tar xfz /tmp/redis.tar.gz //解压
// ls 查看
// rm -r /tmp/redis.tar.gz 删除
5、mkdir -p /usr/src/php/ext //(已存在目录就忽略)
6、在tmp目录下 mv phpredis-3.1.3 /usr/src/php/ext/redis
7、在cd /usr/src/php/ext/redis目录下 docker-php-ext-install redis
8、php -m 查看redis能否安装
9、外部docker restart php72 //php72是docker的name
php-swoole扩展(和redis扩展相似)
1、进入php72容器 docker exec -it php72 bash
2、curl -L -o /tmp/swoole_ext.tar.gz https://codeload.github.com/swoole/swoole-src/tar.gz/v4.2.11
//版本可换 swoole/swoole-src/releases
3、cd /tmp
4、tar xfz /tmp/swoole_ext.tar.gz //解压(swoole-src-4.2.11)
// ls 查看
// rm -r /tmp/swoole_ext.tar.gz 删除
5、mkdir -p /usr/src/php/ext //(已存在目录就忽略)
6、在tmp目录下 mv swoole-src-4.2.11 /usr/src/php/ext/swoole
7、在cd /usr/src/php/ext/swoole目录下 docker-php-ext-install swoole
8、php -m 查看swoole能否安装
9、外部docker restart php72 //php72是docker的name
10、下个easyswoole什么的测试一下
(假如不能运行,是由于容器端口没暴露的起因,处理:
docker run -d -v D:/docker_conf/www:/var/www/html -p 9000:9000 -p 9501:9501 --link mysql57:mysql --name php72 php:7.2-fpm
--启动容器时需要加入端口 -p 9501:9501 //需要哪个端口可以增加
)
Nginx
docker pull nginx:1.14.1
docker run -d -p 80:80 -v D:/docker_conf/www:/var/www/html --link php72:phpfpm --name nginx114 nginx:1.14.1
docker exec -it nginx114 /bin/bash
(
vim /etc/nginx/conf.d/default.conf //没有就apt-get安装
配置:
<code> 9000;###code> |
'''
/etc/init.d/nginx reload
)
docker lamp的更多相关文章
- docker学习---搭建Docker LAMP环境
1.环境 系统版本:CentOS Linux release 7.4.1708 docker版本:docker-ce-18.09 主机IP:192.168.121.121 2.载入MySQL和PHP镜 ...
- Docker 批量启动
批量配置IP for i in `docker ps -a|awk 'NR>1 {print $NF}'`;do IP=`echo $i|awk -F_ '{print "192.16 ...
- 基于Docker 搭建 wordpress
在Docker中,一般遵循一个Docker只运行一个应用,这样方便维护. 首先需要将centos 镜像pull到本地,并搭建本地yum仓库 yum仓库地址:http://192.168.2.11:80 ...
- docker(学习笔记)
# 1. Docker介绍## 1.1 什么是容器?## 1.2 容器的前世今生FreeBASE jail ------> Linux vserverchroot ----> 完整的根文件 ...
- docker-ce 搭建的 lamp 开发环境笔记
工作目录: /home/{username}/dockers/lamp 将docker容器的apache的80 映射为本地主机的81 # sudo docker pull mattrayner/lam ...
- Docker下梦织CMS的部署
摘要:Docker的广泛应用相对于传统的虚拟机而言提高了资源的利用率,推广后docker的影响不容忽视,在启动速度.硬盘.内存.运行密度.性能.隔离性和迁移性方面都有很大的提高.本次实训我们在cent ...
- docker-02
环境准备 10.0.0.100这台宿主机先做好给docker容器本地yum源,其实也可以用阿里等其他的yum源 1 上传6.9和7.6的镜像到10.0.0.100这台服务器 [root@docker ...
- docker-03
Docker构建私有registry(仓库) #1 启动registry [root@docker ~]# docker run -d -p 5000:5000 --restart=always -- ...
- Linux详解(基础、环境配置、项目部署入门)
Linux(CentOS 7)操作系统 消息队列(Kafka.RabbitMQ.RocketMQ),缓存(Redis),搜索引擎(ES),集群分布式(需要购买多台服务器,如果没有服务器我们就只能使用虚 ...
随机推荐
- 由 UWP 版网易云音乐闪退引发的博文
今天,不知怎么的.网易云音乐出现了一打开就闪退的情况.百度了好些时候未果,就直接 Windows + i 打开 Windows 设置 > 应用 在应用和功能列表中找到网易云音乐,在展开的 高级选 ...
- MapReduce编程:词频统计
首先在项目的src文件中需要加入以下文件,log4j的内容为: log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j ...
- Codeforces 587 E. Duff as a Queen
题目链接:http://codeforces.com/contest/587/problem/E 其实就是线段树维护区间线性基,合并的时候注意一下.复杂度${O(nlog^{3})}$ #includ ...
- 封装海康SDK出现无法加载 DLL“..\bin\HCNetSDK.dll”: 找不到指定的模块
今天在封装海康设备的时候出现了这么一个问题,在初始化的时候提升无法加载 DLL“..\bin\HCNetSDK.dll”: 找不到指定的模块. 在网上查找了几个方法,并不是很靠谱,于是从源头找找,是什 ...
- 微信小程序,加载更多
html <!-- 头部 --> <view class='tab'> <view class="tab-new {{selected_new?'active' ...
- C#实现基于ffmpeg加虹软的人脸识别
关于人脸识别 目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸 识别开发库时,也横向对比了三种库,包括在线识别的百度.开源的OpenC ...
- 这可能是史上最全的css布局教程
标题严格遵守了新广告法,你再不爽,我也没犯法呀!话不多说,直入正题. 所谓布局,其实包含两个含义:尺寸与定位.也就是说,所有与尺寸和定位相关的属性,都可以用来布局. 大体上,布局中会用到的有:尺寸相关 ...
- [译] 关于 Angular 依赖注入你需要知道的
如果你之前没有深入了解 Angular 依赖注入系统,那你现在可能认为 Angular 程序内的根注入器包含所有合并的服务提供商,每一个组件都有它自己的注入器,延迟加载模块有它自己的注入器. 但是,仅 ...
- MVC实战之排球计分软件(深入了解面向对象编程)
在此篇博客之前,我已经写了一个实战系列的博客,虽然不太成熟但是相对比较实用,在这篇博客我将继续使用mvc编程此软件. 此篇博客会在一定的时间内完成,此次完成的软件的一个需求是提供给运动员的使用.我将在 ...
- DFS例题
特殊的质数肋骨(递归)] -题目描述-农民约翰的母牛总是生产出最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋 ...