Docker Compose
1、介绍
Compose是一个定义和管理多容器的工具,使用Python语言编写。使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像、数据卷、网络、映射端口等;然后 一条命令管理所有服务,比如启动、停止、重启等。
docker-compose是一个方便部署的工具,用docker我们只能同时部署一个容器,用了docker-compose可以同时部署一套容器,大大提高效率
2、安装
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
或者
pip install docker-compose
3、YAML文件格式及编写注意事项
YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。
YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。
YAML文件格式注意事项:
1. 不支持制表符tab键缩进,需要使用空格缩进
2. 通常开头缩进2个空格
3. 字符后缩进1个空格,如冒号、逗号、横杆
4. 用井号注释
5. 如果包含特殊字符用单引号引起来
6. 布尔值(true、false、yes、no、on、off)必须用引号括起来,这样分析器会将他们解释为字符串。
配置文件常用字段:
字段 |
描述 |
build dockerfile context |
指定Dockerfile文件名构建镜像上下文路径 |
image |
指定镜像 |
command |
执行命令,覆盖默认命令 |
container_name |
指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale |
deploy |
指定部署和运行服务相关配置,只能在Swarm模式使用 |
environment |
添加环境变量 |
networks |
加入网络,引用*networks下条目 |
ports |
暴露端口,与-p相同,但端口不能低于60 |
volumes |
挂载宿主机路径或命名卷。如果是命名卷在*volumes定义卷名称 |
restart |
重启策略,默认no,always|on-failure|unless-stopped |
hostname |
容器主机名 |
官方文档:https://docs.docker.com/compose/compose-file
常用命令:
字段 |
描述 |
build |
重新构建服务 |
ps |
列出容器 |
up |
创建和启动容器 |
exec |
在容器里执行命令 |
scale |
指定一个服务容器启动数量 |
top |
显示容器进程 |
logs |
查看容器输出 |
down |
删除容器、网络、数据卷和镜像 |
stop/start/restart |
停止/启动/重启服务 |
Compose应用案例
docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 81:80
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
php:
hostname: php
build:
context: ./php
dockerfile: Dockerfile
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:
nginx Dockerfile
FROM centos:7
MAINTAINER www.aliangedu.com
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
ADD nginx-1.12.1.tar.gz /tmp
RUN cd /tmp/nginx-1.12.1 && \
./configure --prefix=/usr/local/nginx && \
make -j 2 && \
make install
RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
COPY nginx.conf /usr/local/nginx/conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["./sbin/nginx", "-g", "daemon off;"]
php Dockerfile
FROM centos:7
MAINTAINER www.aliangedu.com
RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel
ADD php-5.6.31.tar.gz /tmp/
RUN cd /tmp/php-5.6.31 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql --with-mysqli \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-iconv \
--enable-fpm --enable-zip --enable-mbstring && \
make -j 4 && \
make install && \
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \
sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && \
sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf
COPY php.ini /usr/local/php/etc
RUN rm -rf /tmp/php-5.6.31* && yum clean all
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]
mysql 引用的使用官方的镜像
上一篇: docker compose
下一篇: java删除文件、删除目录及目录下的文件