• docker-compose入门示例:一键部署 Nginx+Tomcat+Mysql


    整体环境配置

    整体环境的配置,如果一个一个 Dockerfile 去写,那么是相当麻烦的,好在 Docker 有一个名为 Docker-Compose 的工具提供,我们可以使用它一次性完成整体环境的配置: 

    首先我们看看 docker-compose.yml 配置文件的内容:
    version: "3"
    services:
      mysql:
        container_name: mysql
        image: 192.168.1.30:5000/mysql:5.7                            #从私有仓库拉镜像
        restart: always                      
        volumes:
          - ./mysql/data/:/var/lib/mysql/                             #映射mysql的数据目录到宿主机,保存数据
          - ./mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf #把mysql的配置文件映射到容器的相应目录
        ports:
          - "6033:3306"
        environment:
          - MYSQL_ROOT_PASSWORD=123456
      nginx:
        container_name: nginx
        restart: always
        image: 192.168.1.30:5000/nginx
        ports:
          - 80:80
          - 443:443
          - 5050:5050
          - 4040:4040
        volumes:
          - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf            #映射nginx的配置文件到容器里
          - ./nginx/logs/:/var/log/nginx/
          - ./nginx/data/:/var/share/nginx/html/                     #映射nginx的网页目录到容器里
        links:
          - tomcat:t1                                                #连接 tomcat镜像
      tomcat:
        container_name: tomcat
        restart: always
        image: 192.168.1.30:5000/tomcat
        ports:
          - 8080:8080
          - 8009:8009
        volumes:
          - ./tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml  #映射 tomcat的配置文件到容器里
          - ./tomcat/webapps/web:/usr/local/tomcat/webapps/web          #映射一个web服务
          - ./tomcat/logs/:/usr/local/tomcat/logs/
        links:
          - mysql:m1                                                    #连接数据库镜像

    一共设置了三个 service,分别是 mysql, nginx, tomcat,其中,需要注意的地方是它们的 volumes 以及 links。

    mysql 环境配置

    首先看看最简单的 mysql,它没有设置 links,因为是其他容器来连接它,不需要设置links。但是 mysql 的 volumes 最为重要,如果不设置 volumes 的话,每一次 docker 重启,或者 mysql 的 container 重启,database 数据就会啥都没有了。所以 mysql 的 volumes设置了mysql 产生的 data 文件需要映射到宿主机的./mysql/data 目录下,这个目录可以自己定,mysql 的配置文件从宿主机的./mysql/conf/mysqld.conf 读取,内容可自己配置好。
    nginx 环境配置 

    它也设置了 volumes和links,这个地方的 links,建立了与 tomcat 容器的连接,因为nginx 负责监听 80 端口,tomcat 负责监听 8080 端口,nginx 接收到动态网页需要由 tomcat 来处理,就要转发到 8080端口。docker 的环境下,nginx 直接将请求转发到 8080,tomcat 是不会转发的。所以用llinks,这里的值为 t1,为名字。
    在 nginx.conf文件中,要加上如下配置:

    在http端中加

    upstream backend {                 #后台负载均衡容器及端口,本例为一个,t1 tomcat容器的名字

      server t1:8080;                      

    }

    在server加   

      location / {       

        proxy_pass http://backend$request_uri;       

        proxy_set_header  Host $host:$server_port;       

        proxy_set_header  X-Real-IP  $remote_addr;       

        client_max_body_size  10m;   

      }

    tomcat 环境配置

    volumes:
          - ./tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml  #映射 tomcat的配置文件到容器里
          - ./tomcat/webapps/web:/usr/local/tomcat/webapps/web          #映射一个web服务

    该server.xml文件提前在宿主机配置好,包括web网页;同时把web映射到容器的相应目录。

    最后执行如下命令:

    docker-compose  up 或者 docker-compose  -f   *.yaml文件名

    创建容器。如果没有出现错误,创建成功。

    一般的错误,都是因为挂载目录有错误,有的是写错了,有的是映射到容器中的相应目录不正确,关于容器的目录我总结如下:

    mysql::/etc/mysql/mysql.conf.d/mysqld.cnf 为配置文件位置

    nginx: :/etc/nginx/nginx.conf 为配置文件位置,/var/share/nginx/html/  为nginx的网页目录

    tomcat: :/usr/local/tomcat/conf/server.xml  为tomcat的配置文件位置,/usr/local/tomcat/webapps 为网页站点目录

    通过以上我们不只可以一键创建一个mysql,nginx, tomcat 的动静分离网站环境,同时我们对 docker-compose 有了一定的了解,使我们轻松完成docker-compose  的入门学习。

  • 相关阅读:
    C# 程序不包含适合于入口点的静态 "Main" 方法
    Sql Prompt下载及安装破解图文教程
    DataGridView列值值输入非法就屏蔽,例如数字列不允许输入中文
    C#用DataTable实现Group by数据统计
    oracle 11g 出现的问题及解决办法
    数据库三大范式的理解
    Linux进程间通信(管道及有名管道FIFO)(转)
    Linux进程间通信(信号量,共享内存)(转)
    JAVA面向对象基础
    JAVA数据类型基础
  • 原文地址:https://www.cnblogs.com/mushou/p/9537846.html
Copyright © 2020-2023  润新知