docker搭建lnmp环境
2018-08-09 13:57
337 查看
卸载之前旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
删除之前镜像
rm -RF /var/lib/docker
添加 yum 仓库
1. 添加依赖包 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 2. 添加仓库 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安装docker-ce
yum install docker-ce
启动docker
systemctl start docker
验证docker是否安装成功
docker run hello-world
安装mysql
1. 获取mysql镜像 docker pull mysql 2. 启动容器 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name lxj_mysql mysql 说明: -d 让容器在后台运行 -p 添加主机到容器的端口映射 -e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置 –name 容器的名字,随便取,但是必须唯一
查看刚创建的容器
docker ps
安装php-fpm
1. 获取php-fpm镜像 docker pull php:7.2-fpm 2. 创建容器 docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link lxj_mysql:mysql --name lxj_phpfpm php:7.2-fpm 说明: -d 让容器在后台运行 -p 添加主机到容器的端口映射 -v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的 –name 容器的名字 –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。 这里如果不指定–link参数其实也是可以得,因为容易本身也是有ip的且唯一,所以我们也可以直接利用ip去访问容器。
进入容器
docker exec -ti lxj_phpfpm /bin/bash cd /var/nginx/www/html touch index.php 说明: -t 在容器里生产一个伪终端 -i 对容器内的标准输入 (STDIN) 进行交互 容器中默认是没有vim的,所以我们首先要安装vim,需要注意的是安装前记得先执行apt update命令,不然安装会出现问题。
安装PHP扩展
先进入lxj_phpfpm容器 docker exec -ti lxj_phpfpm /bin/bash 再安装PHP扩展 docker-php-ext-install pdo_mysql
docker安装nginx
1. 获取nginx镜像 docker pull ngixn 2. 运行容器 docker run -d -p 80:80 --name lxj_nginx\ -v /var/nginx/www/html:/var/www/html\ --link lxj_phpfpm:phpfpm --name lxj_nginx nginx 说明: -d 让容器在后台运行 -p 添加主机到容器的端口映射 -v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一点非要一模一样,如果不一样在配置nginx的时候需要注意 –name 容器的名字 –link 与另外一个容器建立起联系 3. 进入容器 docker exec -ti lxj_nginx /bin/bash 4. 修改配置文件 vim /etc/nginx/nginx.conf location ~ \.php$ { root /var/www/html; fastcgi_index index.php; fastcgi_pass phpfpm:9000;//这里改成我们之前--link进来的容器,也可以直接用php容器的ip fastcgi_param SCRIPT_FILENAME $document_root$fastcdi_script_name;//如果你的根目录和php容器的根目录不一样,这里的$document_root需要换成你php下的根目录,不然php就找不到文件了 include fastcgi_params; }
编辑index.php
<?php try { $con = new PDO('mysql:host=mysql;dbname=test', 'root', '123456'); $con->query('SET NAMES UTF8'); $res = $con->query('select * from user'); while ($row = $res->fetch(PDO::FETCH_ASSOC)) { echo "id:{$row['id']} name:{$row['name']}"; } } catch (PDOException $e) { echo '错误原因:' . $e->getMessage(); }
查看所有镜像
docker images
删除某个镜像
docker image rm nginx
删除某个容器
docker rm lxj_nginx
安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version
通过配置文件创建dnmp容器
mkdir /usr/local/dnmp vim /usr/local/dnmp/ nginx: image: nginx:latest ports: - "80:80" volumes: - ./www/:/var/www/html/:rw - ./conf/nginx/conf.d:/etc/nginx/conf.d/:ro - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./log/nginx/:/var/log/nginx/:rw links: - php:fpm php: image: php:7.2-fpm ports: - "9000:9000" volumes: - ./www/:/var/www/html/:rw - ./conf/php/php.ini:/usr/local/etc/php/php.ini:ro - ./conf/php/php-fpm.d/www.conf:/usr/local/etc/php-fpm.d/www.conf:rw - ./log/php-fpm/:/var/log/php-fpm/:rw links: - mysql:mysql - redis:redis mysql: image: mysql:latest ports: - "3306:3306" volumes: - ./conf/mysql/my.cnf:/etc/mysql/my.cnf:ro - ./mysql/:/var/lib/mysql/:rw - ./log/mysql/:/var/log/mysql/:rw environment: MYSQL_ROOT_PASSWORD: "123456" redis: image: redis:latest ports: - "6379:6379" dnmp目录结构 ├── docker-compose.yml 容器启动配置文件 ├── Dockerfile PHP-FPM构建配置文件 ├── conf 配置目录 │ ├── mysql MySQL配置文件目录 │ │ └── my.cnf MySQL配置文件 │ ├── nginx Nginx配置文件目录 │ │ ├── conf.d 站点配置文件目录 │ │ │ ├── site.conf 站点1 Nginx配置文件 │ │ └── nginx.conf Nginx通用配置文件 │ └── php PHP配置目录 │ ├── php-fpm.d PHP-FPM配置目录 │ │ └── www.conf PHP-FPM配置文件 │ └── php.ini PHP配置文件 ├── log 日志目录 │ ├── mysql MySQL日志目录 │ ├── nginx Nginx日志目录 │ └── php-fpm PHP-FPM日志目录 ├── mysql MySQL数据文件目录 └── www 站点根目录 执行 docker-compose up阅读更多
相关文章推荐
- 在Linux下搭建基于Docker的LNMP+Redis的开发环境
- [置顶] Docker实战-分离部署LNMP环境搭建Wordpress个人网站详细配置
- 在centos中使用Docker搭建LNMP环境,附Docker常用方法
- 在Linux下搭建基于Docker的LNMP+Redis的开发环境
- Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)
- 基于Docker搭建LNMP环境
- mac搭建docker lnmp环境
- 使用docker搭建lnmp环境
- lnmp团队开发环境docker环境搭建 mac系统为例
- Docker实战-分离部署LNMP环境搭建Wordpress个人站点
- docker搭建 LNMP 环境
- mac+virtualbox+centos7+docker搭建lnmp环境
- 基于Docker搭建LNMP环境(转)
- Docker搭建LNMP(Linux/Nginx/Mysql/Php)环境教程参考笔记
- docker 搭建lnmp开发环境
- docker搭建LNMP环境
- CentOS7最小化安装下源码编译搭建LAMP, LNMP环境及搭建discuz论坛
- 基于docker的spark-hadoop分布式集群之一: 环境搭建
- 搭建LNMP环境(CentOS 6)