docker-compose入門示例:一鍵部署 Nginx+Tomcat+Mysql

来源:https://www.cnblogs.com/mushou/archive/2018/08/26/9537846.html
-Advertisement-
Play Games

整體環境配置 整體環境的配置,如果一個一個 Dockerfile 去寫,那麼是相當麻煩的,好在 Docker 有一個名為 Docker-Compose 的工具提供,我們可以使用它一次性完成整體環境的配置: 首先我們看看 docker-compose.yml 配置文件的內容:version: "3"s ...


整體環境配置

整體環境的配置,如果一個一個 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  的入門學習。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當一個Action完成它的任務後,通常需要返回一個實現IActionResult的對象,而最常見的就是View或者ViewResult,所謂的視圖對象。那麼視圖與最終所看到的頁面之間的聯繫又是怎樣形成的,這便是本文想要探討的問題。 在ResourceInvoker類之中,可以找到下列的代碼。這些代碼 ...
  • .net 信息採集ajax數據 關於.net信息採集的資料很多,但是如果採集的網站是ajax非同步載入數據的模式,又如何採集呢?今天就把自己做信息採集時,所遇到的一些問題和心得跟大家分享一下。 採集網站的幾種方式與利弊: 利用系統自帶HttpWebRequest對象,採集網站內容,優點是採集效率快,但 ...
  • 1、 閉包的含義 首先閉包並不是針對某一特定語言的概念,而是一個通用的概念。除了在各個支持函數式編程的語言中,我們會接觸到它。一些不支持函數式編程的語言中也能支持閉包(如java8之前的匿名內部類)。 在看過的對於閉包的定義中,個人覺得比較清晰的是在《JavaScript高級程式設計》這本書中看到的 ...
  • Asp.Net MVC EF之二:原生EF插入,更新數據的正確方法,EF更新數據將之前修改的欄位也還原了 ...
  • 實驗說明: 雲計算的發展使得桌面上雲,windows 10就必不可少,這一章就如何製作QCOW2鏡像文件並優化進行說明。 實驗環境: 宿主機系統 :Fedora 28 WorkStation 虛擬機管理器 :Virt-Manager 1.5.1 虛擬機配置 :Windows10 1709 virbr ...
  • 關於進程 Process what is process ? 什麼是進程 process life cycle 進程的生命周期 process states 進程狀態 什麼是進程? 進程是已啟動的可執行程式的運行實例,進程有以下組成部分: • 已分配記憶體的地址空間; • 安全屬性,包括所有權憑據和特 ...
  • 一、簡介 當下有許多的運維自動化工具( 配置管理 ),例如:Ansible、SaltStack、Puppet、Fabric 等。 Ansible 一種集成 IT 系統的配置管理、應用部署、執行特定任務的開源平臺,是 AnsibleWorks 公司名下的項目,該公司由 Cobbler 及 Func 的 ...
  • 文件管理 創建、複製、刪除、移動、查看、編輯、壓縮、查找 一、Linux目錄結構 Windows: 以多根的方式組織文件 C:\ D:\ E:\Linux: 以單根的方式組織文件 / /目錄結構: FSH (Filesystem Hierarchy Standard) 註:下圖為Centos7目錄結 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...