摘要:環境要求安裝了的主機本文示例環境為準備鏡像首先把所有需要用到的鏡像拉取下來容器編排是容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器。
準備鏡像環境要求:安裝了docker的主機 (本文示例環境為centos7.4)
首先把所有需要用到的鏡像拉取下來
# nginx $ docker pull nginx # php & php-fpm $ docker pull php:7.1.0-fpm # redis $ docker pull redisdocker-compose容器編排
Docker Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器。
安裝Compose直接從github下載即可,前提要先安裝Docker,版本要1.9.1以上
$ curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose
安裝后確認:
$ docker-compose --version使用Compose啟動多個Nginx容器 創建編排腳本
在 /docker/nginx 目錄下創建 docker-compose.yml
version: "2" services: web1: image: nginx links: - web2 - web3 - web4 ports: - "8080:8080" volumes: - "/docker/nginx/web1/conf.d:/etc/nginx/conf.d" web2: image: nginx volumes: - "/docker/slb/www2:/www" - "/docker/nginx/web2/conf.d:/etc/nginx/conf.d" web3: image: nginx volumes: - "/docker/slb/www3:/www" - "/docker/nginx/web3/conf.d:/etc/nginx/conf.d" web4: image: nginx volumes: - "/docker/slb/www4:/www" - "/docker/nginx/web4/conf.d:/etc/nginx/conf.d"
啟動容器
# up:創建并啟動 -d:后臺運行 $ docker-compose up -d # 查看容器 $ docker-compose ps配置Nginx 反向代理Nginx配置
添加upstream節點,默認使用輪詢方式進行負載
編輯并保存 /docker/nginx/web1/conf.d/slb.conf
upstream slb { server web2; server web3; server web4; } server { listen 8080; server_name 127.0.0.1; gzip on; location /{ root /www; index index.html index.php; # 反向代理的主機頭 proxy_pass http://slb; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }web應用Nginx配置
編輯并保存 /docker/nginx/web2/conf.d/demo.conf (其余的web3與web4同理)
server { listen 80; server_name localhost; gzip on; location / { root /www; index index.html index.htm; autoindex off; } }標記Nginx目錄
為了確定Nginx集群是否搭建成功,分別在 web2 web3 web4 的主目錄放置不同的html文檔
編輯并保存 /docker/nginx/slb/web2/index.html (其余的web3與web4同理)
Document web2
瀏覽器訪問 127.0.0.1:8080 并刷新
至此,Nginx集群已搭建完成!
PHP環境安裝在準備鏡像的時候拉了一個php:7.1.0-fpm的鏡像,但為了實現session共享,解決集群之間session問題,需要在此鏡像改動一下,安裝redis拓展,修改php的session儲存方式為redis
在 /docker/php/ 目錄下創建Dockerfile文件
FROM php:7.1.0-fpm MAINTAINER xiaowei "694623056@qq.com" # Install php extension--redis RUN cd /usr/local/ && mkdir redis_phpext && curl -o redis_phpext/redis-3.1.3.tgz http://101.96.10.64/pecl.php.net/get/redis-3.1.3.tgz && cd redis_phpext && tar zxvf redis-3.1.3.tgz && cd redis-3.1.3 && phpize && ./configure --with-php-config=/usr/local/bin/php-config && make && make install && rm -rf /usr/local/redis_phpext創建自定義鏡像
# 切換目錄 $ cd /docker/php # build: 創建,切記勿忽略后面的 . 意為當前目錄 $ docker build -t php:add_redis .
創建完成后 docker images 查看是否成功
$ docker images容器依賴
修改docker-compose.yml文件,添加php與redis的編排,這里已經不需要測試集群,可以把Nginx應用網站根目錄統一掛載到 /docker/www
最終編排腳本version: "2" services: web1: image: nginx links: - web2 - web3 - web4 ports: - "8080:8080" volumes: - "/docker/nginx/web1/conf.d:/etc/nginx/conf.d" web2: image: nginx links: - php volumes: - "/docker/www:/www" - "/docker/nginx/web2/conf.d:/etc/nginx/conf.d" web3: image: nginx links: - php volumes: - "/docker/www:/www" - "/docker/nginx/web3/conf.d:/etc/nginx/conf.d" web4: image: nginx links: - php volumes: - "/docker/www:/www" - "/docker/nginx/web4/conf.d:/etc/nginx/conf.d" php: build: /docker/php/ links: - redis volumes: - "/docker/www:/www" - "/docker/php/conf.d:/usr/local/etc/php/conf.d" redis: image: redis volumes: - "/docker/redis/data:/data" ports: - "6379:6379" command : redis-server --appendonly yes添加php配置文件
在 /docker/php/conf.d/ 目錄下創建文件redis.ini
;添加redis拓展 extension = redis.so ;設置session儲存方式為redis session.save_handler = redis session.save_path = redis:6379修改web應用Nginx配置
將php類型文件轉發給php-fpm處理,修改 web2 web3 web4 Nginx配置文件
/docker/nginx/web[2-3]/demo.conf
server { listen 80; server_name localhost; gzip on; location / { root /www; index index.php index.html index.htm; autoindex off; } location ~ .php { root /www; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }重新編排容器
將一開始編排的集群容器停止并刪除,重新創建并啟動容器
# 停止 $ docker-compose stop # 刪除 需要確認 y $ docker-compose rm # 創建容器啟動并后臺運行 $ docker-compose up -d測試環境! phpinfo
在 /docker/www 目錄創建 index.php文件
瀏覽器訪問 127.0.0.1:8080/index.php
session共享在 /docker/www 目錄創建 session.php文件
瀏覽器訪問 127.0.0.1:8080/session.php 每次的session_id相同則表明已實現session共享
本文出自個人博客 最好的安排 轉載請注明出處!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27152.html
摘要:環境要求安裝了的主機本文示例環境為準備鏡像首先把所有需要用到的鏡像拉取下來容器編排是容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器。 環境要求:安裝了docker的主機 (本文示例環境為centos7.4) 準備鏡像 首先把所有需要用到的鏡像拉取下來 # nginx $ docker pull nginx # php & php-fpm $ docker pul...
摘要:今天整理了一下近大半年以來的一些文章,和我的預期一樣,很多文章我都忘記自己曾經寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點贊,加轉發。 今天整理了一下近大半年以來的一些文章,和我的預期一樣,很多文章我都忘記自己曾經寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點贊,加轉發。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...
摘要:今天整理了一下近大半年以來的一些文章,和我的預期一樣,很多文章我都忘記自己曾經寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點贊,加轉發。 今天整理了一下近大半年以來的一些文章,和我的預期一樣,很多文章我都忘記自己曾經寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點贊,加轉發。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...
摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經常被問到的持久化與恢復實現故障恢復自動化詳解哨兵技術查漏補缺最易錯過的技術要點大掃盲意外宕機不難解決,但你真的懂數據恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...
閱讀 1759·2021-11-25 09:43
閱讀 1953·2019-08-30 13:56
閱讀 1214·2019-08-30 12:58
閱讀 3412·2019-08-29 13:52
閱讀 755·2019-08-26 12:17
閱讀 1452·2019-08-26 11:32
閱讀 934·2019-08-23 13:50
閱讀 1297·2019-08-23 11:53