可以直接使用官方镜像搭建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>   
location \ {        root  /var/www/html;        index index.html
index.htm index.php;    }        location ~\.php$ {        ...       
root           /var/www/html        fastcgi_pass   电脑ip:
9000;###
最好配个本地的虚拟域名        fastcgi_index  index.php;        fastcgi_param 
SCRIPT_FILENAME $document_root$fastcgi_script_name;        ...    }
</
code>

'''
/etc/init.d/nginx reload
)

docker lamp的更多相关文章

  1. docker学习---搭建Docker LAMP环境

    1.环境 系统版本:CentOS Linux release 7.4.1708 docker版本:docker-ce-18.09 主机IP:192.168.121.121 2.载入MySQL和PHP镜 ...

  2. Docker 批量启动

    批量配置IP for i in `docker ps -a|awk 'NR>1 {print $NF}'`;do IP=`echo $i|awk -F_ '{print "192.16 ...

  3. 基于Docker 搭建 wordpress

    在Docker中,一般遵循一个Docker只运行一个应用,这样方便维护. 首先需要将centos 镜像pull到本地,并搭建本地yum仓库 yum仓库地址:http://192.168.2.11:80 ...

  4. docker(学习笔记)

    # 1. Docker介绍## 1.1 什么是容器?## 1.2 容器的前世今生FreeBASE jail ------> Linux vserverchroot ----> 完整的根文件 ...

  5. docker-ce 搭建的 lamp 开发环境笔记

    工作目录: /home/{username}/dockers/lamp 将docker容器的apache的80 映射为本地主机的81 # sudo docker pull mattrayner/lam ...

  6. Docker下梦织CMS的部署

    摘要:Docker的广泛应用相对于传统的虚拟机而言提高了资源的利用率,推广后docker的影响不容忽视,在启动速度.硬盘.内存.运行密度.性能.隔离性和迁移性方面都有很大的提高.本次实训我们在cent ...

  7. docker-02

    环境准备 10.0.0.100这台宿主机先做好给docker容器本地yum源,其实也可以用阿里等其他的yum源 1 上传6.9和7.6的镜像到10.0.0.100这台服务器 [root@docker ...

  8. docker-03

    Docker构建私有registry(仓库) #1 启动registry [root@docker ~]# docker run -d -p 5000:5000 --restart=always -- ...

  9. Linux详解(基础、环境配置、项目部署入门)

    Linux(CentOS 7)操作系统 消息队列(Kafka.RabbitMQ.RocketMQ),缓存(Redis),搜索引擎(ES),集群分布式(需要购买多台服务器,如果没有服务器我们就只能使用虚 ...

随机推荐

  1. MyBatis mapper parameterType

    1.   传入简单类型 JAVA代码: public User get(Long id) { return (User) getSqlSession().selectOne("com.liu ...

  2. Docker——入门实战

    I. Docker简介Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.我也将Docker类比于Python虚拟环境,可以有 ...

  3. DFS例题

    特殊的质数肋骨(递归)] -题目描述-农民约翰的母牛总是生产出最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋 ...

  4. EF连接Sqlserver2014,使用DBGeography时提示无法加载sqlserverspatial.dll

    (1)确认你要使用的SqlServer版本,如果是2014,就要在nuget中添加microsoft.sqlserver.types.dll,使用12.0.4100.1这个版本,它会自动添加sqlse ...

  5. Container&injection

    容器(Container)就是组件和底层服务细节之间的接口.在web组件.企业级Bean等能够执行之前,它必须被装配为一个JavaEE模块,并部署在容器上. 在JavaEE5时代通过注解的方式注入(i ...

  6. react-thunk的使用流程

    react-thunk作用:使我们可以在action中返回函数,而不是只能返回一个对象.然后我们可以在函数中做很多事情,比如发送异步的ajax请求. 这就是react-thunk的使用方法.接受一个d ...

  7. STL 小白学习(6) queue

    //queue 一端插入 另一端删除 //不能遍历(不提供迭代器) 不支持随机访问 #include <queue> #include <iostream> using nam ...

  8. 判断是否存在某个字段hasOwnProperty

    <script type="text/javascript">         var obj = {             a: 1,             fn ...

  9. linux软件管理 软件安装

    软件包分类 1) 源代码包   脚本安装包 2) 二进制包   (RPM包,系统默认包) 源码包编译后形成二进制包 JDK的安装 下载jdk的文件解压 tar -zxvf jdk-8u144-linu ...

  10. 注册Activity

    <activity android:name=".类名"                               android:label="@string/ ...