可以直接使用官方镜像搭建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. Docker:bash: vi: command not found

    在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim 操作步鄹: 1.apt-get update 2.ap ...

  2. Redis学习--key的通用操作、移库操作、订阅与事务、持久化和总结

    key的通用操作 keys pattern: pattern *表示任意一个多个字符 ?表示任意一个字符 del key1 key2 删除多个key exists keyname 查看是否存在 ren ...

  3. 51Nod - 1384 正常解法

    这个是正常解法 #include<stdio.h> #include<string.h> #include<math.h> #include<time.h&g ...

  4. echarts4的学习

    echarts的学习 1.echarts的全解注释.https://www.2cto.com/kf/201708/665624.html ### 2.从echarts3开始学习echarts源码.ht ...

  5. hihocoder #1044 : 状态压缩·一 状压DP

    http://hihocoder.com/problemset/problem/1044 可以看出来每一位的选取只与前m位有关,我们把每个位置起始的前m位选取状态看出01序列,就可以作为一个数字来存储 ...

  6. POJ-3294 Life Forms n个字符串中出现超过n/2次的最长子串(按字典序依次输出)

    按照以前两个字符串找两者的最长公共子串的思路类似,可以把所有串拼接到一起,这里为了避免讨论LCP跨越多个串需需要特别处理的问题用不同的字符把所有串隔开(因为char只有128位,和可能不够用,更推荐设 ...

  7. day052-53 django框架

    一.MVC和MTV模型 这就是web开发中的一种思维模式或者说一套理念,MTV也是基于MVC发展出来的,本质相同,都是使各组件保持松耦合 MVC  把web应用分为模型(model),控制器(cont ...

  8. 『Python』库安装

    1.安装指定版本的tensorflow 虽然官网有4种安装方式,并且推荐用anaconda的方式,但是有时候我们需要指定版本的tensorflow,而pip可以做到. 比如我装的是anaconda3. ...

  9. 92. Reverse Linked List II 反转链表 II

    网址:https://leetcode.com/problems/reverse-linked-list-ii/ 核心部分:通过a.b.c三个变量之间的相互更新,不断反转部分链表 然后将反转部分左右两 ...

  10. spring boot多模块项目找不到类

    项目结构 mapper依赖pojo, service依赖mapper和pojo portal依赖pojo和service. 全都是maven模块 <groupId>com.haitian& ...