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  的入門學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM