目录
Compose应用案例
一、前提配置
(一)安装docker-ce(Linux安装Docker)
(二)安装docker-compose
二、安装docker compose部署lnmp
(一)目录结构:
(二)编写compose文件:
三、验证LNMP环境
Compose应用案例
一、前提配置
为了能够说明compose如何实现上述编排与部署的原理,下面和大家分享一个通过compose来编排部署LNMP服务来更好的理解它。
(一)安装docker-ce(Linux安装Docker)
CentOS系统下安装Docker可以有两种方式:
一种是使用curl获得Docker的安装脚本进行安装,
另一种是使用YUM仓库来安装Docker。主要注意的是目前Docker只能支持64位系统。
1、安装前准备:
[root@huyang1 ~]# iptables -F
[root@huyang1 ~]# setenforce 0
[root@huyang1 ~]# systemctl stop firewalld
保证可以访问互联网
[root@huyang1 ~]# ping www.baidu.com
[root@huyang1 ~]# ls /etc/yum.repos.d/
[root@huyang1 yum.repos.d]# yum clean all && yum makecache fast
[root@huyang1 ~]# wget -O
/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@huyang1 ~]# yum -y install yum-utils
device-mapper-persistent-data lvm2
[root@huyang1 ~]# yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@huyang1 ~]# ls /etc/yum.repos.d/
[root@huyang1 ~]# yum -y install docker-ce
[root@huyang1 ~]# docker version 查看版本
[root@huyang1 ~]# systemctl start docker
[root@huyang1 ~]# systemctl enable docker
3、阿里云镜像加速器
阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
[root@huyang1 ~]# cat << END > /etc/docker/daemon.json
{ "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
[root@huyang1 ~]# systemctl daemon-reload
[root@huyang1 ~]# systemctl restart docker
[root@huyang1 ~]# docker version
(二)安装docker-compose
下载最新版本安装,下载时间可能比较长
[root@compose ~]# curl -L \
https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@compose ~]# chmod +x
/usr/local/bin/docker-compose
[root@compose ~]# docker-compose --version
二、安装docker compose部署lnmp
(一)目录结构:
[root@compose ~]# mkdir compose_lnmp/
[root@compose ~]# cd compose_lnmp/
[root@compose compose_lnmp]# tree
[root@compose compose_lnmp]#vim mysql/conf/my.cnf
[root@compose compose_lnmp]#vim nginx/Dockerfile
[root@compose compose_lnmp]#vim nginx/nginx.conf
[root@compose compose_lnmp]#vim nginx/run.sh
[root@compose compose_lnmp]#vim php/Dockerfile
[root@compose compose_lnmp]#vim wwwroot/index.html
[root@compose compose_lnmp]#vim wwwroot/index.php
(二)编写compose文件:
[root@compose compose_lnmp]# cat docker-compose.yml
配置如下:
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 80:80
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
php:
hostname: php
build:
context: ./php
dockerfile: Dockerfile
ports:
- 9000:9000
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
mysql:
hostname: mysql
image: mysql:5.6
ports:
- 3306:3306
networks:
- lnmp
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/data:/var/lib/mysql
command: --character-set-server=utf8
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: user123
networks:
lnmp:
~
可以看到一份标准配置文件应该包含 version、services、networks 三大部分,共有三级标签,每一级都是缩进两个空格。
下面来详细说明一下里面的内容:
(一)version: '3' 这是定义compose的版本号为version 3,可以参考官方文档详细了解具体有哪些版本 Overview | Docker Documentation
(二)services:
nginx:这是services下面的二级标签,名字用户自己定义,它将是服务运行后的名称;
hostname: nginx 这是定义容器的主机名,将写入到/etc/hostname中;build:
context: ./nginx 指定nginx服务的上下文路径;
dockerfile:Dockerfile 指定通过上面指定路径中的Dockerilfe来构建;
ports:
- 80:80 端口映射没什么好说的;
networks:
-lnmp 指定的网络环境
volumes:把宿主机的/wwwroot目录绑定到容器中的/usr/local/nginx/html目录;php:这个二级标签服务和下面的内容跟nginx差不多;
mysql:这个二级标签服务也和nginx、php差不多,唯一不同的是多了个images标签、还有定义了些环境变量。
image: mysql:5.6 它是通过mysql:5.6镜像来构建mysql服务器,前面nginx、php都指定了上下文通过Dockerfile来构建的。
environment:
MYSQL_ROOT_PASSWORD:定义root用户密码变量为123456;
MYSQL_DATABASE:定义了数据变量为wordpress;
MYSQL_USER:定义了普通用户变量为user;
MYSQL_PASSWORD:定义了普通用户密码变量为user123;
(三)networks:
lnmp: 相当于执行docker network create lnmp命令了;
最后来运行docker-compose命令来启动:
[root@localhost ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7
[root@localhost ~]# docker images centos:7
[root@localhost compose_lnmp]# docker-compose -f docker-compose.yml up -d
[root@localhost compose_lnmp]# docker-compose ps
三、验证LNMP环境
客户端使用浏览器验证 docker-compose 创建的 lnmp 环境