卖童书的网站该怎么做,WordPress百度分享内容,网站建设平台简介,系统开发外包目录 一、Docker-compose 概述
二、Docker-compose简介
三、YML文件格式及编写注意事项
1.yml文件是什么
2.yml问价使用注意事项
3.yml文件的基本数据结构
四、Docker-compose 配置
1.Docker-Compose 配置常用字段
2.Docker Compose常用命令
3.使用Docker-compose创建…目录 一、Docker-compose 概述
二、Docker-compose简介
三、YML文件格式及编写注意事项
1.yml文件是什么
2.yml问价使用注意事项
3.yml文件的基本数据结构
四、Docker-compose 配置
1.Docker-Compose 配置常用字段
2.Docker Compose常用命令
3.使用Docker-compose创建LNMP环境并运行Wordpress网站平台
配置nginx的Dockerfile文件
配置mysql的Dockerfile
部署php的Dockerfile
部署docker-compose.yml
浏览器访问测试 一、Docker-compose 概述
一个Dockerfile模板文件可以定义一个单独的应用容器Docker Compose作为Docker官方产品可以服务编排定义多个容器 二、Docker-compose简介 Dockercompose 项目是 Docker 官方的开源项目负责实现对 Docker 容器集群的快速编排。Docker compose项目由 Python 编写调用 Docker 服务提供的 API来对容器进行管理。因此只要所操作的平台支持Docker API就可以在其上利用 compose 来进行编排管理。 Dockercompose一个用于定义和运行多容器 pocker 应用程序的工具。它允许用户使用 YAL 文件米定义应用程序的配置包括容器的数量、容器之间的依赖关系。环境变量、端口映射以及其他设置。然后用户可以使用 docker-compose 命令来启动和管理这些容器。 使用 Docker compose 可以方便地管理多个容器例如可以同时启动一个 meb 服务器容器和一个数据库容器并在它们之间建立网络连接。Docker compose还支持自定义网络使得容器可以在不同的网络中进行通信。 Docker compose文件通常包含一个或多个服务每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务以及容器之间的依赖关系。例如一个 eD 服务器服务可以句含一个或多个Web 服务器容器而这些容器又依赖于一个数据库容器。 docker-compose将所管理的容器分为三层 分别是工程project服务service以及容器containner Docker-Ccompose 的项目配置文件默认为 docker-copose.yml可通过环境变量 (COMPOSE_FILE 或 -f 参数自定义配置文件 其定义了多个有依赖关系的服务及每个服务运行的容器。compose 允许用户通过一个单独的 docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。 三、YML文件格式及编写注意事项
1.yml文件是什么
YAML 是一种标记语言它可以很直观的展示数据序列化格式可读性高。类似于 json 数据描述
语言语法比 json 简单的很多。YAML 数据结构通过缩进来表示连续的项目通过减号来表示
键值对用冒号分隔数组用中括号 [ ] 括起来 hash 用花括号 { } 括起来 2.yml问价使用注意事项
大小写敏感通过缩进表示层级关系只能使用空格缩进不能使用tab键可以使用井号键进行注释符号字符都有一个空格 如test: 单引号起来的字符会被当作普通字符串处理。# 双引号里面如果是特殊字符就表示本意$ 表示普通字符串$ 表示就是$ 3.yml文件的基本数据结构
yaml格式文件 文件名以 .yaml .yml 为后缀用 空格缩进 表示字段的层级关系
特点可读性高易于管理
#一级字段
key1: value1 #一个key只有一个值值的类型为 纯量
key2:
- value1 #一个key有多个值的纵向格式值的类型为 列表
- value2
key3: [value1, value2] #一个key有多个值的横向格式值的类型为 数组
key4:#二级字段subkey1: value1 #用 空格缩进 表示字段的层级关系同一层字段要靠左对齐subkey2value2subkey3: #key的值也是键值对值的类型为 对象#三级字段sskey1: value1sskey2: value2
json格式文件文件名以 .json 为后缀用 大括号{} 表示字段的层级关系每层字段除了最后一个
字段都要用逗号 , 结尾
特点易于编程语言的api接口解析
#一级字段
{key1: [value1],key2: [value2, value3],key3: {#二级字段subkey1: [value1],subkey2: [value2],subkey3: {#三级字段sskey1: [value1],sskey2: [value2]}}
}key1: 值相当于echo helloworldhelloworldkey2: | 值相当于echo -e hello\nworld #key: | 表示保留文本块中的换行符helloworldkey3: |- 值相当于echo -e hello\nworld\chelloworldkey4: | 值相当于echo -e hello\nworld\nhelloworldkey5: hello 值相当于echo hello world # 会将文本块中的回车替换为空格worldkey1: a value1 #定义数据锚点即定义复制的数据相当于 avalue1
key2: *a #引用锚点数据值相当于为 echo $a , key2: value1
四、Docker-compose 配置
1.Docker-Compose 配置常用字段
image使用本地镜像或从仓库拉取镜像创建容器build使用dockerfile现场构建镜像创建容器context指定dockerfile文件所在的目录路径dockerfile指定dockerfile文件名command设置容器的启动命令会覆盖镜像中的CMD指令container_name设置容器名 --nameenvironment设置环境变量 -e -envnetworks设置容器使用的自定义网络和IP --ipnetwork_mode设置容器的网络模式 --networkports设置容器端口映射 -pvolumes 设置数据卷挂载 -vvolumes_from设置数据卷容器挂载版本3不支持 --volumes-fromhostname设置容器主机名 -h --hostnamesysctls设置容器的内核参数 --sysctllinks设置容器互联 --linkprivileged设置容器拥有root权限 --privilegedrestart设置容器重启策略 --restartdepends_on设置容器的依赖关系
2.Docker Compose常用命令
docker-compose [-f docker-compose.yml] up -d 根据模板文件创建并后台启动所有容器down 根据模板文件删除所有容器ps 根据模板文件查看所有容器状态start|stop|restart 根据模板文件启动|停止|重启所有容器
3.使用Docker-compose创建LNMP环境并运行Wordpress网站平台 配置nginx的Dockerfile文件
mkdir lnmp
cd lnmp
mkdir nginx mysql phpvim /opt/lnmp/nginx/Dockerfile
FROM centos:7
RUN yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/nginx-1.22.0
RUN ./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module make -j 4 make install
ENV PATH /usr/local/nginx/sbin:$PATH
COPY nginx.conf /usr/local/nginx/conf/
ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod -R 777 /usr/local/nginx/html
EXPOSE 80
VOLUME [/usr/local/nginx/html/]
CMD [/usr/local/nginx/sbin/nginx,-g,daemon off;]
配置mysql的Dockerfile
vim /opt/lnmp/mysql/Dockerfile
FROM centos:7
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c make useradd -M -s /sbin/nologin mysql
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_CHARSETutf8 \
-DDEFAULT_COLLATIONutf8_general_ci \
-DWITH_EXTRA_CHARSETSall \
-DWITH_INNOBASE_STORAGE_ENGINE1 \
-DWITH_ARCHIVE_STORAGE_ENGINE1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE1 \
-DMYSQL_DATADIR/usr/local/mysql/data \
-DWITH_BOOSTboost \
-DWITH_SYSTEMD1 make -j 4 make install
COPY my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./mysqld \
--initialize-insecure \
--usermysql \
--basedir/usr/local/mysql \
--datadir/usr/local/mysql/data cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ systemctl enable mysqld
ENV PATH/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [/usr/local/mysql]
ENTRYPOINT [/usr/sbin/init]
部署php的Dockerfile
vim /opt/lnmp/php/Dockerfile
FROM centos:7
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 -j 4 make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
COPY php.ini /usr/local/php/lib
COPY php-fpm.conf /usr/local/php/etc/
COPY www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
ENTRYPOINT [/usr/local/php/sbin/php-fpm,-F]
部署docker-compose.yml
vim docker-compose
version: 3
services:nginx:hostname: nginxbuild:context: /opt/lnmp/nginx/dockerfile: Dockerfileports:- 1314:80container_name: nginx_servernetworks:lnmp:ipv4_address: 172.111.0.10volumes:- nginx-data:/usr/local/nginx/html
#声明挂在卷名称和目录mysql:hostname: mysqlbuild:context: /opt/lnmp/mysqldockerfile: Dockerfileports:- 3306:3306container_name: mysql_servernetworks:lnmp:ipv4_address: 172.111.0.20privileged: true
#给数据库权限。true虽然登录容器显示的是root用户但是它是一个伪管理员
#一旦privileged: true容器内的root用户和宿主机的root用户拥有一样的权限
#生产中尽量不给volumes:- mysql-data:/usr/local/mysql/php:hostname: phpbuild:context: /opt/lnmp/php/dockerfile: Dockerfileports:- 9000:9000container_name: php_servernetworks:lnmp:ipv4_address: 172.111.0.30volumes:- nginx-data:/usr/local/nginx/html/- mysql-data:/usr/local/mysql/
networks:lnmp:driver: bridgeipam:config:- subnet: 172.111.0.0/16
volumes:nginx-data:mysql-data:docker-compose -f docker-compose.yml up -d创建完成
浏览器访问测试
http://192.168.80.100/index.php
http://192.168.80.100/wordpress/index.php