赞
踩
目录
1.5.3准备 php.ini、php-fpm.conf、www.conf 配置文件
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排
Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)
Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。
Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)
Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理。
- systemctl stop firewalld
- setenforce 0
docker pull centos:7
- FROM centos:7
- MAINTAINER this is nginx image <zzz1>
- RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx
- ADD nginx-1.12.0.tar.gz /usr/local/src/
- WORKDIR /usr/local/src/nginx-1.12.0
- RUN ./configure \
- --prefix=/usr/local/nginx \
- --user=nginx \
- --group=nginx \
- --with-http_stub_status_module && make -j2 && make install
- ENV PATH /usr/local/nginx/sbin:$PATH
- ADD nginx.conf /usr/local/nginx/conf/
- #ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/
- RUN chmod 777 -R /usr/local/nginx/html/
- EXPOSE 80
- EXPOSE 443
- ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
1.3.4创建html文件夹,并解压wordpress
- FROM centos:7
- MAINTAINER this is mysql image <zzz2>
- RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
- ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
- WORKDIR /usr/local/src/mysql-5.7.20/
- RUN cmake \
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
- -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
- -DSYSCONFDIR=/etc \
- -DSYSTEMD_PID_DIR=/usr/local/mysql \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DMYSQL_DATADIR=/usr/local/mysql/data \
- -DWITH_BOOST=boost \
- -DWITH_SYSTEMD=1 && make -j 4 && make install
- ADD my.cnf /etc/
- ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
- RUN useradd -M -s /sbin/nologin mysql && chown mysql:mysql /etc/my.cnf && chown -R mysql:mysql /usr/l
- ocal/mysql/ && /usr/local/mysql/bin/mysqld \
- --initialize-insecure \
- --user=mysql \
- --basedir=/usr/local/mysql \
- --datadir=/usr/local/mysql/data && cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/
- systemd/system/
- EXPOSE 3306
- CMD ["/usr/local/mysql/bin/mysqld"]
- [client]
- port = 3306
- socket=/usr/local/mysql/mysql.sock
-
- [mysql]
- port = 3306
- socket = /usr/local/mysql/mysql.sock
- auto-rehash
-
- [mysqld]
- user = mysql
- basedir=/usr/local/mysql
- datadir=/usr/local/mysql/data
- port = 3306
- character-set-server=utf8
- pid-file = /usr/local/mysql/mysqld.pid
- socket=/usr/local/mysql/mysql.sock
- bind-address = 0.0.0.0
- skip-name-resolve
- max_connections=2048
- default-storage-engine=INNODB
- max_allowed_packet=16M
- server-id = 1
-
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_
- IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
- FROM centos:7
- MAINTAINER this is php image <zzz3>
- RUN yum -y install gd \
- libjpeg libjpeg-devel \
- libpng libpng-devel \
- freetype freetype-devel \
- libxml2 libxml2-devel \
- zlib zlib-devel \
- curl curl-devel \
- openssl openssl-devel \
- gcc gcc-c++ make pcre-devel && useradd -M -s /sbin/nologin nginx
- ADD php-7.1.10.tar.bz2 /usr/local/src/
- WORKDIR /usr/local/src/php-7.1.10
- RUN ./configure \
- --prefix=/usr/local/php \
- --with-mysql-sock=/usr/local/mysql/mysql.sock \
- --with-mysqli \
- --with-zlib \
- --with-curl \
- --with-gd \
- --with-jpeg-dir \
- --with-png-dir \
- --with-freetype-dir \
- --with-openssl \
- --enable-fpm \
- --enable-mbstring \
- --enable-xml \
- --enable-session \
- --enable-ftp \
- --enable-pdo \
- --enable-tokenizer \
- --enable-zip && make -j2 && make install
- ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
- ADD php.ini /usr/local/php/lib/
- ADD php-fpm.conf /usr/local/php/etc/
- ADD www.conf /usr/local/php/etc/php-fpm.d/
- EXPOSE 9000
- ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]
- [root@localhost php]# vim php.ini
- 939 date.timezone = Asia/Shanghai # 取消注释,修改
- 1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
- # MySQL数据库的默认socket文件路径,用于PHP连接MySQL数据库时寻找MySQL服务器的通信端口
- [root@localhost php]# egrep -v "^;" php.ini | egrep -v "^$"
- # 显示php.ini文件中的非注释和非空行内容,即显示出配置文件中的有效配置项
- curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
-
- # `uname -s`-`uname -m`也可以写成$(uname -s) 和 $(uname -m):分别会自动替换为你的系统类型(如:Linux)和机器架构(如:x86_64),确保你下载的是适合你系统的版本。
- # curl -L:这部分表示使用curl命令进行下载,并且使用-L参数来跟随重定向
- # -o /usr/local/bin/docker-compose: 表示将下载的文件保存为/usr/local/bin目录下的docker-compose文件
-
-
-
- #安装
- chmod +x /usr/local/bin/docker-compose
-
- #查看版本
- docker-compose --version
- #定义docker-compose版本,可以是2 或 3
- version: '3'
- services:
- nginx:
- container_name: nginx
- hostname: nginx
- build:
- context: /opt/compose_lnmp/nginx/
- dockerfile: Dockerfile
- ports:
- - 80:80
- - 443:443
- #设置数据卷挂载
- volumes:
- - /opt/compose_lnmp/nginx/html:/usr/local/nginx/html
- networks:
- lnmp:
- ipv4_address: 172.18.0.10
-
- mysql:
- container_name: mysql
- build:
- context: /opt/compose_lnmp/mysql
- dockerfile: Dockerfile
- ports:
- - 3306:3306
- networks:
- lnmp:
- ipv4_address: 172.18.0.20
- volumes:
- - db-data:/usr/local/mysql
- privileged: true
-
- php:
- container_name: php
- build:
- context: /opt/compose_lnmp/php
- dockerfile: Dockerfile
- ports:
- - 9000:9000
- networks:
- lnmp:
- ipv4_address: 172.18.0.30
- volumes:
- - db-data:/usr/local/mysql
- - ./nginx/html:/usr/local/nginx/html
- depends_on:
- - nginx
- - mysql
-
- networks:
- lnmp:
- driver: bridge
- ipam:
- config:
- - subnet: 172.18.0.0/16
-
- volumes:
- db-data:
内容解释如下:
- #定义docker-compose版本,可以是2 或 3
- version: '3' 定义版本
- services: 定义服务
- nginx:
- container_name: nginx #指定容器的名称为nginx
- hostname: nginx #容器的主机名为nginx
- build: #构建上下文和Dockerfile的位置
- context: /opt/compose_lnmp/nginx/ 指明Dockerfile文件目录
- dockerfile: Dockerfile dockerfile文件名称
- ports: 暴露端口
- - 80:80
- - 443:443 #将宿主机的80端口映射到容器的80端口,将宿主机的443端口映射到容器的443端口
- #设置数据卷挂载
- volumes:
- - /opt/compose_lnmp/nginx/html:/usr/local/nginx/html
- networks:
- lnmp: #将该服务连接到名为lnmp的网络,并指定了容器的IPv4地址
- ipv4_address: 172.18.0.10
-
- mysql: 定义第二个服务
- container_name: mysql
- build:
- context: /opt/compose_lnmp/mysql
- dockerfile: Dockerfile
- ports:
- - 3306:3306 #将宿主机的3306端口映射到容器的3306端口
- networks: 给容器自定义ip地址
- lnmp:
- ipv4_address: 172.18.0.20
- volumes: 通过顶级卷创建数据卷
- - db-data:/usr/local/mysql
- privileged: true #使容器内的root拥有真正的root权限
-
- php: 第三个服务是php
- container_name: php
- build:
- context: /opt/compose_lnmp/php
- dockerfile: Dockerfile
- ports:
- - 9000:9000 #将宿主机的9000端口映射到容器的9000端口
- networks:
- lnmp:
- ipv4_address: 172.18.0.30
- volumes:
- - db-data:/usr/local/mysql
- - ./nginx/html:/usr/local/nginx/html
- depends_on: # 声明了该服务依赖于nginx和mysql服务
- - nginx
- - mysql
-
- networks: # 定义了一个叫做lnmp的网络,使用了bridge驱动
- lnmp:
- driver: bridge
- ipam:
- config:
- - subnet: 172.18.0.0/16 # 指定了IP地址池的子网范围
-
- volumes: 创建顶级卷,因为在版本3不支持volumes_from,需要通过顶级卷来实现容器之间的数据共享
- db-data: #db-data 用于 MySQL 数据
保存到一个名为 docker-compose.yml
的文件中,然后在包含该文件的目录中运行 docker-compose up -d
命令来启动这个环境
- docker exec -it mysql bash
- mysql -u root -p
- 回车
- create database wordpress;
- grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123123';
- grant all privileges on *.* to 'root'@'%' identified by '123123';
- flush privileges;
再次去浏览器访问http://192.168.246.13/wordpress/index.php
如果遇到问题,报错,镜像拉去不下来
- Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
- 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error" 报错
-
- yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- yum makecache
- # 如果遇到类似dns问题,可修改dns、替换阿里源尝试解决
-
- 添加下面的
- vim /etc/sysctl.conf
- net.ipv4.ip_forward=1
-
- sysctl -p
-
- 在ens33网卡中加入
- DNS2=114.114.114.114然后重启网卡
- systemctl restart network
-
- systemctl restart docker
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。