整体环境配置

整体环境的配置,如果一个一个 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  的入门学习。

docker-compose入门示例:一键部署 Nginx+Tomcat+Mysql的更多相关文章

  1. shell一键部署nginx+tomcat

    1.首先拉取环境  tomcat需要用到jdk环境 提前准备好nginx源码包,放于指定目录下 vim test.sh #!/bin/bash yum -y install gcc gcc-c++ z ...

  2. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

  3. 使用docker部署nginx+tomcat架构(3):使用docker-compose简化部署操作

    经历了之前的两篇,我们已经大体上了解了docker部署容器的过程. 使用docker部署nginx+tomcat架构 使用docker部署nginx+tomcat架构():访问mysql数据库 不过, ...

  4. 使用docker部署nginx+tomcat架构(2):访问mysql数据库

    上一篇完成了通过docker部署nginx+tomcat的基础软件架构,但是距离一个真正可用的软件架构还差得很远.其中最重要的一点是缺少数据库这个角色的存在,那么本篇就来完善这一点. 废话少说,直接进 ...

  5. Tomcat热部署:Maven项目一键部署到Tomcat服务器 - 支持多环境

    参考:Eclipse中的Maven项目一键部署到Tomcat服务器 - 支持多环境部署 命令 debug模式设置关联源码 eclipse --> 项目右键 --> Debug As --& ...

  6. Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken

    前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)--技术流ken>,<Ansible常用模块介绍及使用(二)--技术流ken><Ansible剧本介绍及 ...

  7. docker 部署 nginx+php+mysql

    系统:centos7 使用root账户 开放80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 安装docker yum ins ...

  8. shell脚本一键部署nginx

    一键部署nginx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...

  9. Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(4)

    前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)–技术流ken>,<Ansible常用模块介绍及使用(二)–技术流ken><Ansible剧本介绍及使用 ...

随机推荐

  1. C#中的多线程 - 同步基础 z

    原文:http://www.albahari.com/threading/part2.aspx 专题:C#中的多线程 1同步概要Permalink 在第 1 部分:基础知识中,我们描述了如何在线程上启 ...

  2. Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结

    本课主题 Master 资源调度的源码鉴赏 资源调度管理 任务调度与资源是通过 DAGScheduler.TaskScheduler.SchedulerBackend 等进行的作业调度 资源调度是指应 ...

  3. gmock使用、原理及源码分析

    1      初识gmock 1.1      什么是Mock 便捷的模拟对象的方法. 1.2      Google Mock概述 google mock是用来配合google test对C++项目 ...

  4. Hibernate、Mybatis与Spring Data JPA

    从零开始集成Springboot+MyBatis+JPA https://www.jianshu.com/p/e14c4a6f6871 MyBatis 与Hibernate的区别 http://xhr ...

  5. June 27th 2017 Week 26th Tuesday

    Happiness takes no account of time. 幸福不觉光阴过. At the beginning of this week, I planned to make some s ...

  6. 如何玩转Android远控(androrat)

    关于WebView中接口隐患与手机挂马利用的引深 看我是怎样改造Android远程控制工具AndroRat 1.修改布局界面 2.配置默认远程ip和端口 3.LauncherActivity修改为运行 ...

  7. python 时间和时间戳的转化

    时间戳与时间之间的转换,需要一个中间过程,即将先将时间或时间戳先转为时间元组! 1.时间转时间戳: import datetime, time s = datetime.datetime(2016,6 ...

  8. luogu P1522 Cow Tours

    嘟嘟嘟 题面挺绕的,“翻译”一下: 1.牧区是一个点,牧场是所有直接相连的点构成的联通块. 2.两个牧区之间的距离是这两个距离之间的最短路,只有直接相连的两个牧区之间的距离是欧几里得距离. 3.牧场的 ...

  9. RabbitMQ之五种消息模型

    首先什么是MQ MQ全称是Message Queue,即消息对列!消息队列是典型的:生产者.消费者模型.生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息.因为消息的生产和消费都是异步的,而 ...

  10. CSS布局方面的一些小总结

    1. display属性 display是CSS布局的第一站,它控制一个元素以什么“身份”出现在页面布局当中.它的值有很多个,常用的有block,inline,inline-block,table,n ...