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

docker搭建lnmp環(huán)境的實現(xiàn)步驟

 更新時間:2024年07月01日 09:57:47   作者:碼農也是人  
DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一鍵安裝程序,本文就來介紹一下docker搭建lnmp環(huán)境的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下

近期閑來無事,用公司電腦部署了一套環(huán)境,記錄一下部署經(jīng)過和踩的坑。

Nginx

1、拉取鏡像,需要使用鏡像創(chuàng)建容器

拉取的Nginx版本可以自己設,我是用的nginx:latest

// 拉取鏡像
docker pull nginx:1.18.0

1.18.0: Pulling from library/nginx
f7ec5a41d630: Pull complete 
0b20d28b5eb3: Pull complete 
1576642c9776: Pull complete 
c12a848bad84: Pull complete 
03f221d9cf00: Pull complete 
Digest: sha256:e90ac5331fe095cea01b121a3627174b2e33e06e83720e9a934c7b8ccc9c55a0
Status: Downloaded newer image for nginx:1.18.0
docker.io/library/nginx:1.18.0

// 安裝完成后可以使用命令查看安裝了哪些鏡像
docker images

REPOSITORY        TAG       IMAGE ID       CREATED       SIZE
nginx             latest    605c77e624dd   2 years ago   141MB

2、宿主機創(chuàng)建Nginx所需的映射文件

這個需要提前創(chuàng)建,因為如果直接使用docker命令創(chuàng)建容器會報錯本地沒有映射文件

先把nginx所需目錄創(chuàng)建了

[root@localhost ~]# mkdir -pv /lnmp/nginx/{conf/conf.d,data,logs,html}
mkdir: created directory ‘/lnmp'
mkdir: created directory ‘/lnmp/nginx'
mkdir: created directory ‘/lnmp/nginx/conf'
mkdir: created directory ‘/lnmp/nginx/conf/conf.d'
mkdir: created directory ‘/lnmp/nginx/data'
mkdir: created directory ‘/lnmp/nginx/logs'
mkdir: created directory ‘/lnmp/nginx/html'

[root@localhost ~]# ls /lnmp/nginx/
conf  data  logs html
[root@localhost ~]# 

在conf中創(chuàng)建nginx.conf,conf.d中也需要一個default.conf,這些后面映射都會用到,創(chuàng)建好nginx配置文件后打開將默認配置存進去,因為在映射時本地的這個文件會將容器中的文件覆蓋掉(當然你也可以先創(chuàng)建容器,將容器中的nginx.conf復制出來)

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
	server {
		listen 80;
		server_name localhost;
		root /usr/share/nginx/html;
		index index.php index.html index.htm;

		location / {
			try_files $uri $uri/ /index.php?$query_string;
			autoindex on;
		}
		
		location ~ \.php$ {
            // 這里是我踩的一個大大的坑
            // 如果不指定php-fpm運行目錄,會為空導致nginx無法解析php文件
            // 所以這里必須要明確指定運行根目錄?。?!
			root           /var/www/html;
			fastcgi_pass   php81-fpm:9000;
			fastcgi_index  index.php;
			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
			include        fastcgi_params;
		}


		error_log /var/log/nginx/error.log;
		access_log /var/log/nginx/access.log;
	}

}

3、創(chuàng)建容器

這里有一個點需要注意,在創(chuàng)建之前我們需要先創(chuàng)建一個 Docker 網(wǎng)絡,以便 Nginx、MySQL 和 PHP 容器可以相互通信

docker network create lnmp-network

之后創(chuàng)建容器,創(chuàng)建成功后可以使用ps命令查看有哪些容器 

docker run -it --name nginx --network lnmp-network -p 80:80 -v D:/lnmp/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v D:/lnmp/nginx/conf/conf.d:/etc/nginx/conf.d -v D:/lnmp/nginx/html:/usr/share/nginx/html -v D:/lnmp/nginx/logs:/var/log/nginx -d nginx:latest


docker ps
CONTAINER ID   IMAGE                    COMMAND                   CREATED        STATUS             PORTS
                NAMES
a9af314321d6   nginx:latest             "/docker-entrypoint.…"   25 hours ago   Up 57 minutes      0.0.0.0:80->80/tcp                  nginx

命令中的鏡像名稱和地址需要改成自己的,我這里只映射了80端口,443端口也可以一起映射,有需要的話就加上。

Mysql

沒什么好說的,mysql還是一樣的流程,上才藝

#拉取Mysql鏡像,這里使用5.7版本
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
[root@localhost ~]# docker pull  mysql:5.7.32           
5.7.32: Pulling from library/mysql
a076a628af6f: Pull complete 
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
7065aaa2655f: Pull complete 
b4bc531db40f: Pull complete 
8c3e9d7c9815: Pull complete 
fadfb9734ed2: Pull complete 
Digest: sha256:e08834258fcc0efd01df358222333919df53d4a0d9b2a54da05b204b822e3b7b
Status: Downloaded newer image for mysql:5.7.32
docker.io/library/mysql:5.7.32
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
mysql        5.7.32    cc8775c0fe94   15 months ago   449MB
[root@localhost ~]# 

#創(chuàng)建數(shù)據(jù)目錄
[root@localhost ~]# mkdir -pv /lnmp/mysql/{conf,data,logs}
mkdir: 已創(chuàng)建目錄 "/lnmp/mysql"
mkdir: 已創(chuàng)建目錄 "/lnmp/mysql/conf"
mkdir: 已創(chuàng)建目錄 "/lnmp/mysql/data"
mkdir: 已創(chuàng)建目錄 "/lnmp/mysql/logs"
[root@localhost ~]# ls /lnmp/mysql/
conf  data  logs
[root@localhost ~]# 

#啟動mysql容器
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                               NAMES
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   18 minutes ago   Up 12 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
[root@localhost ~]# docker run -d -p 3306:3306 --name mysql \
> -v /lnmp/mysql/conf:/etc/mysql/conf.d \
> -v /lnmp/mysql/logs:/logs \
> -v /lnmp/mysql/data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> mysql:5.7.32
55cc5694695d26327abee0580af2cbcaf28c49f33da8da24aa50c5b049946e01
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
55cc5694695d   mysql:5.7.32   "docker-entrypoint.s…"   5 seconds ago    Up 3 seconds    0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   18 minutes ago   Up 12 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
[root@localhost ~]# 

PHP

其實也還一樣,拉取鏡像

docker pull nfqlt/php81-fpm:latest

創(chuàng)建映射目錄、文件

cd /lnmp/php-fpm
mkdir logs
touch php.ini
touch php-fpm.conf

當然了,php.ini這種配置文件我是萬萬不會去弄的,所以我創(chuàng)建了一個臨時容器,cp了出來哈哈,感興趣的也可以這么操作,我把命令貼出來

// 啟動容器(不映射 php.ini 文件)
docker run -d --name php81-fpm --network lnmp-network -v D:/lnmp/nginx/html:/var/www/html -v D:/lnmp/php-fpm/logs:/var/log/php-fpm nfqlt/php81-fpm:latest

// 復制容器中的 php.ini 文件到本地
docker cp php81-fpm:/etc/php/8.1/fpm/php.ini D:/lnmp/php-fpm/php.ini

// 停止并刪除原容器
docker stop php81-fpm
docker rm php81-fpm

然后,熟悉的環(huán)節(jié),創(chuàng)建容器

docker run -d --name php81-fpm --network lnmp-network -p 9000:9000 -v D:/lnmp/nginx/html:/var/www/html -v D:/lnmp/php-fpm/php.ini:/etc/php/8.1/fpm/php.ini -v D:/lnmp/php-fpm/php-fpm.conf:/etc/php/8.1/fpm/php-fpm.conf -v D:/lnmp/php-fpm/logs/error.log:/tmp/log/error.log nfqlt/php81-fpm:latest

注:D:/lnmp/nginx/html:/var/www/html映射這個的時候是使用映射nginx的運行目錄(D:/lnmp/nginx/html)的地址來映射,/var/www/html這個是我們上面提到的我踩的大坑,需要設置php運行根目錄,如果搞錯了就會導致無法解析php文件!!

到此這篇關于docker搭建lnmp環(huán)境的實現(xiàn)步驟的文章就介紹到這了,更多相關docker搭建lnmp環(huán)境內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker Registry搭建私有鏡像倉庫的實現(xiàn)方法

    Docker Registry搭建私有鏡像倉庫的實現(xiàn)方法

    這篇文章主要介紹了Docker Registry搭建私有鏡像倉庫的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Docker容器中文亂碼(修改docker容器編碼格式)的解決方案

    Docker容器中文亂碼(修改docker容器編碼格式)的解決方案

    這篇文章主要介紹了Docker容器中文亂碼(修改docker容器編碼格式)的解決方案的相關資料,需要的朋友可以參考下
    2016-12-12
  • docker部署vue項目的實現(xiàn)步驟

    docker部署vue項目的實現(xiàn)步驟

    當我們在本地開發(fā)了一個vue項目之后,肯定是想部署到服務器上供其他人訪問,本文主要介紹了docker部署vue項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • docker容器詳細講解如何精簡鏡像減小體積

    docker容器詳細講解如何精簡鏡像減小體積

    這篇文章主要介紹了docker容器如何精簡鏡像減小體積,一般我們打造鏡像會有幾百MB,學完本文后我們將學會縮小鏡像體積,從而達到做出來的鏡像只有幾十MB,一起來看看吧
    2021-08-08
  • docker安裝及運行MySQL5.7容器完整腳本及說明

    docker安裝及運行MySQL5.7容器完整腳本及說明

    這個腳本用于在Docker中安裝和運行MySQL 5.7容器,它首先創(chuàng)建必要的目錄和配置文件,然后刪除并強制停止現(xiàn)有的MySQL容器,最后啟動一個新的MySQL容器,配置包括設置環(huán)境變量、端口映射、數(shù)據(jù)和配置文件目錄掛載等
    2025-01-01
  • 如何解決報錯unable to remove volume問題

    如何解決報錯unable to remove volume問題

    這篇文章主要介紹了如何解決報錯unable to remove volume問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Docker容器化工具及常用操作的詳細解析

    Docker容器化工具及常用操作的詳細解析

    Docker是容器化技術的核心工具,掌握其常用命令能高效管理容器、鏡像、網(wǎng)絡和數(shù)據(jù)卷,這篇文章主要介紹了Docker容器化工具及常用操作的詳細解析,需要的朋友可以參考下
    2025-08-08
  • Docker for windows pull鏡像文件的安裝位置改變的方法

    Docker for windows pull鏡像文件的安裝位置改變的方法

    這篇文章主要介紹了Docker for windows pull鏡像文件的安裝位置改變的方法的相關資料,需要的朋友可以參考下
    2016-12-12
  • kali安裝docker及搭建漏洞環(huán)境的詳細教程

    kali安裝docker及搭建漏洞環(huán)境的詳細教程

    Docker?是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化,本文重點給大家介紹kali安裝docker及搭建漏洞環(huán)境的過程,感興趣的朋友一起看看吧
    2022-05-05
  • ubuntu如何在docker容器中安裝strongswan

    ubuntu如何在docker容器中安裝strongswan

    這篇文章主要介紹了ubuntu如何在docker容器中安裝strongswan,起動一個ubuntu容器,我是用的docker compose啟動的,compose的配置文件為ipsec-strongswan.yml,感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評論

镇康县| 名山县| 天祝| 黄石市| 揭东县| 浮梁县| 芜湖县| 峨山| 楚雄市| 万全县| 香格里拉县| 桐乡市| 台中县| 永丰县| 黄陵县| 洛扎县| 营口市| 华阴市| 逊克县| 吉水县| 祁东县| 安化县| 宜兰县| 正镶白旗| 民丰县| 左云县| 苗栗县| 马尔康县| 麻栗坡县| 且末县| 双鸭山市| 宁武县| 子洲县| 台江县| 金乡县| 凤凰县| 三门县| 富平县| 古交市| 峨山| 邵东县|