最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker下多容器搭建 lamp的詳細過程(httpd+mysql+php+redis)

 更新時間:2024年01月29日 10:31:12   作者:Kang_Boy  
這篇文章主要介紹了Docker下多容器搭建lamp的詳細過程(httpd+mysql+php+redis),搭建拉取所需鏡像,本文給大家講解的非常詳細,感興趣的朋友跟隨小編一起看看吧

說明

  • LAMP架構是 linux+apache+php+mysql
  • 搭建的服務器環(huán)境,docker容器都基本都是基于linux的,所以實際需要部署的apache容器+php容器+mysql容器+redis容器
  • 本內容docker宿主機是windows
  • 各個容器之間互聯(lián)關系:mysql容器、redis容器 只和 PHP容器有互聯(lián)(–link),httpd容器 只和 php容器有互聯(lián)(–link),所以創(chuàng)建容器的流程 依次 為 mysql 容器、redis容器、php容器(互聯(lián)mysql、redis)、httpd容器(互聯(lián)PHP)
  • 宿主機和容器之間進行目錄或文件掛載時,需提前準備好相關目錄與文件,一旦創(chuàng)建,宿主機里面的目錄或文件 會 直接覆蓋容器內對應的目錄和文件
  • 宿主機和容器之間掛載配置文件時,在宿主機內修改配置文件后,需重啟對應的容器

搭建

拉取所需鏡像

docker pull php:5.6-fpm
docker pull httpd    
docker pull mysql:5.7
docker pull redis:3.2
#版本號可根據(jù)實際需求選擇

mysql

mysql創(chuàng)建

通過 mysql:5.7 鏡像創(chuàng)建一個 mysql 容器
	docker run -d --name my-mysql -p 3333:3306 -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7

-d 后臺運行容器

-p 將宿主機端口映射到容器(3306是默認端口,若使用默認端口,請確保宿主機當前端口未被占用)

-e MYSQL_ROOT_PASSWORD=123456 給root用戶設置一個初始密碼

–name 指定容器別名

mysql測試

第一種:
	進入mysql容器 
	docker exec -it my-mysql /bin/bash
	登錄mysql
	mysql -uroot -p123456
第二種:
	通過Navicat進行連接測試
	主機或IP地址:localhost
    端口:宿主機映射的端口

redis

redis創(chuàng)建

通過 redis:3.2 鏡像創(chuàng)建一個 redis 容器
	 docker run -d --name my-redis -p 6389:6379 redis:3.2

-d 后臺運行容器

-p 將宿主機端口映射到容器(6379是默認端口,若使用默認端口,請確保宿主機當前端口未被占用)

–name 指定容器別名

redis測試

第一種:
	進入mysql容器 
		docker exec -it  my-redis /bin/bash
	切換到客戶端
		redis-cli
	創(chuàng)建一個key
		set name qyh
第二種:
	通過redis管理工具(Redis Desktop Manager) 進行連接測試
	Host:localhost
    Port:宿主機映射的端口

php

php創(chuàng)建

通過 php:5.6-fpm 鏡像創(chuàng)建一個 php 容器
	docker run -d -p 9999:9000 --name my-php -v D:\DockerTest\damp\httpd\www\:/var/www/html --link my-mysql  --link my-redis  php:5.6-fpm

-d 后臺運行容器

-p 將宿主機端口映射到容器(9000是默認端口,若使用默認端口,請確保宿主機當前端口未被占用)

-v D:\DockerTest\damp\httpd\www:/var/www/html 將宿主機的某目錄 到容器內某目錄,實現(xiàn)文件同步
(掛載一個空文件夾是會覆蓋容器中的內容,所以配置文件要事先準備好。這里要注意當前項目的路徑,不要直接拷貝使用)

–link my-mysql 和 前面創(chuàng)建的mysql容器互聯(lián)

–link my-redis 和 前面創(chuàng)建的redis容器互聯(lián)

–name 指定當前容器別名

php安裝擴展

進入php容器中
	docker exec -it my-php /bin/bash
安裝擴展pdo_mysql
	docker-php-ext-install pdo_mysql
安裝擴展mysql
	docker-php-ext-install mysql
安裝擴展mysqli
	docker-php-ext-install mysqli
安裝擴展pdo
	docker-php-ext-install pdo
安裝擴展redis
	#由于php源碼中沒有redis,則需要手動拉取redis包
	#拉取redis擴展包
	curl -L -o /tmp/redis.tar.gz  https://github.com/phpredis/phpredis/archive/4.2.0.tar.gz
	#解壓包
	tar zxvf  /tmp/redis.tar.gz
	#刪除包
	rm -r /tmp/redis.tar.gz
	#創(chuàng)建執(zhí)行目錄
	mkdir -p /usr/src/php/ext
	#將解壓后的redis擴展移到執(zhí)行目錄
	mv phpredis-4.2.0 /usr/src/php/ext/redis
	#安裝redis
	docker-php-ext-install redis

php測試

重啟php容器
		docker restart my-php
進入php容器
		docker exec -it my-php /bin/bash
在宿主機映射目錄 D:\DockerTest\damp\httpd\www\ 下創(chuàng)建一個 index.php
		<?php
		phpinfo();
容器內執(zhí)行 php -f index.php
返回PHP各配置信息,則表示創(chuàng)建成功

php與mysql互聯(lián)測試

進入php容器
		docker exec -it my-php /bin/bash
在宿主機映射目錄 D:\DockerTest\damp\httpd\www\ 下創(chuàng)建一個 dbtest.php
		<?php
		$servername = "my-mysql"; //mysql容器別名
		$username = "root";
		$password = "123456";
		try {
	    	$conn = new PDO("mysql:host=$servername;", $username, $password);
	    	echo "sucess\n";
		}
		catch(PDOException $e)
		{
	   	 echo $e->getMessage();
		}
容器內執(zhí)行 php -f dbtest.php
返回 sucess  ,則表示數(shù)據(jù)庫連接成功

php與redis互聯(lián)測試

進入php容器
		docker exec -it my-php /bin/bash
在宿主機映射目錄 D:\DockerTest\damp\httpd\www\ 下創(chuàng)建一個 redistest.php
		<?php
			 $redis = new Redis();
				$redis->connect('my-redis', 6379); //redis容器別名,默認端口
			    $count = $redis->exists('count') ? $redis->get('count') : 1;
			    echo $count;
			    if($redis->set('count', ++$count)){
					echo "success";
				}else{
					echo "error";
				}
容器內執(zhí)行 php -f redistest.php
返回 sucess  ,則表示redis操作成功

httpd(apache2)

配置文件準備

httpd涉及到一些相關配置,宿主機和容器掛載目錄或文件時,必須要保證存在,因為一旦創(chuàng)建,宿主機所掛載的內容會直接覆蓋容器里對應的內容
1.隨便創(chuàng)建一個httpd容器
	docker run -d --name test-httpd -p 80:80 httpd
2.進入容器 查看相關配置文件位置
	docker exec  -it test-httpd /bin/bash
3.將httpd相關配置 復制 到宿主機
	docker cp test-httpd:/usr/local/apache2/conf/httpd.conf  D:\DockerTest\damp\httpd\conf\
	docker cp test-httpd:/usr/local/apache2/conf/extra  D:\DockerTest\damp\httpd\conf\
4.刪除當前容器
	docker rm -f test-httpd
5.修改 復制到宿主機的配置
    在 httpd.conf 文件最后面添加 
    	Include conf/extra/test.conf (test.conf可以隨便自定義)
    在 extra目錄下 創(chuàng)建 test.conf 文件,并添加
    	 <IfModule dir_module>
				DirectoryIndex index.html index.php
		</IfModule>
		<VirtualHost *:80>
			DocumentRoot "/usr/local/apache2/htdocs"
			ServerName localhost
		<Directory "/usr/local/apache2/htdocs">
 			Options None
 			Require all granted
		</Directory>
	    ProxyRequests Off
		ProxyPassMatch ^/(.*\.php)$ fcgi://172.17.0.9:9000/var/www/html/$1
		</VirtualHost>
		LoadModule proxy_module modules/mod_proxy.so
		LoadModule proxy_connect_module modules/mod_proxy_connect.so
		LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
6.注意:
		 配置文件中 fcgi://172.17.0.9:9000/ 
			 ip:為php容器在局域網中實際的ip,可以通過 docker network inspect bridge 進行查看
			 端口:為容器里默認端口
			 若PHP容器重新啟動,需查看對應IP是否發(fā)生改變
除創(chuàng)建httpd,其他情況下修改配置文件,需重啟httpd服務

httpd創(chuàng)建

通過 httpd:latest 鏡像創(chuàng)建一個 httpd 容器
docker run -d --name my-httpd -p 8081:80 -v D:\DockerTest\damp\httpd\conf\httpd.conf:/usr/local/apache2/conf/httpd.conf -v D:\DockerTest\damp\httpd\conf\extra\:/usr/local/apache2/conf/extra/ -v D:\DockerTest\damp\httpd\www\:/usr/local/apache2/htdocs  --link my-php httpd

-d 后臺運行容器

-p 將宿主機端口映射到容器(80是默認端口,若使用默認端口,請確保宿主機當前端口未被占用)

-v D:\DockerTest\damp\httpd\www:/usr/local/apache2/htdocs 將宿主機的某目錄 到容器內某目錄,實現(xiàn)文件同步
(掛載一個空文件夾是會覆蓋容器中的內容,所以配置文件要事先準備好。這里要注意當前項目的路徑,不要直接拷貝使用)

–link my-php 和 前面創(chuàng)建的php容器互聯(lián)

–name 指定當前容器別名

httpd測試

瀏覽器
http://127.0.0.1:8081/index.php
http://127.0.0.1:8081/dbtest.php   //測試數(shù)據(jù)庫是否連接成功
http://127.0.0.1:8081/dbtest.php   //測試redis是否正常

到此這篇關于Docker下多容器搭建 lamp (httpd+mysql+php+redis)的文章就介紹到這了,更多相關Docker多容器搭建 lamp內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文教你如何清理Docker中閑置的鏡像,容器和卷

    一文教你如何清理Docker中閑置的鏡像,容器和卷

    在使用 Docker 的過程中,很容易積累大量未使用的鏡像、容器和數(shù)據(jù)卷,這些未使用的資源不僅占據(jù)輸出空間,還會消耗磁盤空間,下面我們就來看看如何清理吧
    2025-06-06
  • docker資源控制管理Cgroup的實現(xiàn)

    docker資源控制管理Cgroup的實現(xiàn)

    本文主要介紹了docker資源控制管理Cgroup的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • docker-compose啟動服務方式

    docker-compose啟動服務方式

    這篇文章主要介紹了docker-compose啟動服務方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • docker 使用GPU的過程詳解

    docker 使用GPU的過程詳解

    本文以TensorFlow2.0為例給大家介紹docker 使用GPU的過程詳解,文中給大家介紹了基于拉的tf-gpu鏡像構建自己的鏡像的操作方法,啟動鏡像檢查GPU是否可用的相關知識,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • docker容器資源配額控制詳解

    docker容器資源配額控制詳解

    本篇文章主要介紹了docker容器資源配額控制詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Docker 安裝 LogStash的詳細過程

    Docker 安裝 LogStash的詳細過程

    Logstash,作為Elastic Stack家族中的核心成員之一,是一個功能強大的開源數(shù)據(jù)收集引擎,在本文中,我們將詳細介紹如何借助Docker容器技術快速安裝配置Logstash,以實現(xiàn)日志及各類事件數(shù)據(jù)的無縫集成與實時處理,感興趣的朋友一起看看吧
    2024-03-03
  • Docker搭建并啟動Logstash的實現(xiàn)方式

    Docker搭建并啟動Logstash的實現(xiàn)方式

    這篇文章主要介紹了Docker搭建并啟動Logstash的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Docker實踐--部署Nodejs應用

    Docker實踐--部署Nodejs應用

    本篇文章主要介紹了Docker實踐--部署Nodejs應用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Docker多階段鏡像構建的實現(xiàn)

    Docker多階段鏡像構建的實現(xiàn)

    本篇文章主要介紹了Docker多階段鏡像構建的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • docker創(chuàng)建容器的兩種實現(xiàn)方式(交互式與守護式)

    docker創(chuàng)建容器的兩種實現(xiàn)方式(交互式與守護式)

    這篇文章主要介紹了docker創(chuàng)建容器的兩種實現(xiàn)方式(交互式與守護式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

垣曲县| 襄汾县| 镇原县| 银川市| 东辽县| 普兰县| 鄄城县| 阳东县| 五家渠市| 洛隆县| 昌邑市| 岑溪市| 合水县| 铜梁县| 台中市| 宜都市| 章丘市| 海门市| 清徐县| 和顺县| 麦盖提县| 陈巴尔虎旗| 镇原县| 嘉黎县| 兴山县| 涿鹿县| 宜川县| 宽城| 观塘区| 楚雄市| 乃东县| 东阿县| 鄢陵县| 电白县| 镇巴县| 桃江县| 磐石市| 方正县| 阿鲁科尔沁旗| 石狮市| 厦门市|