您的位置:首页 > 运维架构 > Docker

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
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: