docker(學習筆記第一課) 使用nginx +https + wordpress

文章目錄

  • docker(學習筆記第一課) 使用nginx +https + wordpress
  • 學習內容:
    • 1. 整體架構
      • 1.1 在`aws ec2`的整體架構
      • 1.2 不懂都可以問`AI`
    • 2. 構建詳細
      • 2.1 構建`ec2`
      • 2.2 安裝`docker`
      • 2.3 創建一個`docker`的內部`network`
      • 2.4 創建`wordpress`使用的`mysql`數據庫
      • 2.5 創建兩個`wordpress`的`docker process`
      • 2.6 創建SSL證書
      • 2.7 創建Nginx配置文件
        • 2.7.1 創建`nginx.conf`
        • 2.7.2 創建Nginx Docker的`image`
        • 2.7.3 創建Nginx Docker容器
    • 3. 訪問`nginx`的網頁
    • 4. 操作`docker`的有用命令
      • 4.1 訪問`docker`的`log`
      • 4.2 進入`docker`的進程`process`
      • 4.3 `docker`的內部`directory`映射宿主機的`directory`(`mount`)
      • 4.4 停止所有容器
      • 4.5 啟動所有容器
      • 4.6 刪除所有容器(數據會保留在卷中)
      • 4.7 刪除所有數據卷
      • 4.8 `docker compose`

docker(學習筆記第一課) 使用nginx +https + wordpress

  • awsec2上安裝docker
  • 部署兩個wordpressdocker
  • 做成自定義證書certificate

學習內容:

  • 使用docker部署wordpress
  • 生成certificate
  • 使用docker部署nginx

1. 整體架構

1.1 在aws ec2的整體架構

這里采用aws ec2主要是國內的網絡上docker的鏡像都很少能連接上,所以才使用aws ec2
在這里插入圖片描述

1.2 不懂都可以問AI

在學習一些新概念的時候可以多問問deepseek。
為了先能夠清晰了解docker,這里特意告訴AI,先不使用docker compose即使我說錯了,AI也能理解意思!

在這里插入圖片描述
這里,AI給出了一個完整的例子,并且可以使用的具體命令。

2. 構建詳細

2.1 構建ec2

這里在awspublic subnet里面構建ec2ip address13.115.188.112
在這里插入圖片描述

2.2 安裝docker

sudo yum install docker
sudo systemctl start docker

2.3 創建一個docker的內部network

docker network create wordpress-network

在這里插入圖片描述

2.4 創建wordpress使用的mysql數據庫

docker run -d \--name mysql \--network wordpress-network \-e MYSQL_ROOT_PASSWORD=rootpassword \-e MYSQL_DATABASE=wordpress \-e MYSQL_USER=wordpress \-e MYSQL_PASSWORD=wordpress \-v mysql_data:/var/lib/mysql \mysql:5.7
  • -e 這里設定docker啟動的環境變量,包括用戶名和密碼的建立,這里設定好了之后后面的wordpress會使用。
  • -v 設定將docker內部的數據路徑設定成docker volume,這里的docker volumn會對宿主機的local directory進行mount。通過這樣,宿主機的local directory就會映射到docker內部的路徑。
  • --network,這里執行docker內部的network,以便相關的docker ps進程實例能夠通過一個網絡互相訪問。
  • --name是指定docker process的一個識別子,能夠唯一定位一個docker process

2.5 創建兩個wordpressdocker process

第一個wordpress

docker run -d \--name wordpress1 \--network wordpress-network \-e WORDPRESS_DB_HOST=mysql \-e WORDPRESS_DB_USER=wordpress \-e WORDPRESS_DB_PASSWORD=wordpress \-e WORDPRESS_DB_NAME=wordpress \-v wordpress_data1:/var/www/html \wordpress:latest

第二個wordpress

docker run -d \--name wordpress2 \--network wordpress-network \-e WORDPRESS_DB_HOST=mysql \-e WORDPRESS_DB_USER=wordpress \-e WORDPRESS_DB_PASSWORD=wordpress \-e WORDPRESS_DB_NAME=wordpress \-v wordpress_data2:/var/www/html \wordpress:latest

這里,看出wordpress都使用wordpress-network

2.6 創建SSL證書

mkdir -p nginx/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout nginx/ssl/private.key \-out nginx/ssl/certificate.crt

在這里插入圖片描述
這里生成以下兩個文件:(/home/ec2-user/nginx/ssl)

  • certificate.crt
  • private.key

2.7 創建Nginx配置文件

2.7.1 創建nginx.conf

/home/ec2-user上創建nginx.conf,這里看到upstream這里,指向wordpress1wordpress280端口。

upstream wordpress {server wordpress1:80;server wordpress2:80;
}server {listen 443 ssl;server_name localhost;ssl_certificate /etc/nginx/ssl/certificate.crt;ssl_certificate_key /etc/nginx/ssl/private.key;location / {proxy_pass http://wordpress;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}server {listen 80;server_name localhost;return 301 https://$host$request_uri;
}
2.7.2 創建Nginx Docker的image

/home/ec2-user/上執行下面的命令,創建nginx docker

mkdir -p temp-nginx
cp nginx.conf temp-nginx/
cp -r nginx/ssl temp-nginx/
# 創建Dockerfile
echo "FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY ssl/ /etc/nginx/ssl/" > temp-nginx/Dockerfile
docker build -t custom-nginx temp-nginx/
# 清理臨時文件
rm -rf temp-nginx

在這里插入圖片描述

2.7.3 創建Nginx Docker容器
docker run -d \--name nginx \--network wordpress-network \-p 80:80 \-p 443:443 \custom-nginx

3. 訪問nginx的網頁

這里由于是自定義的ssl證書,所以顯示是不安全的。如果是本番環境,這里會做成正式的證書。
在這里插入圖片描述

4. 操作docker的有用命令

4.1 訪問dockerlog

docker logs -f nginx

其中-f表示一直動態監視log,和tail -f loglinux命令很像。

在這里插入圖片描述

4.2 進入docker的進程process

想要進入docker所在的OS也是特別方便。

sudo docker exec -it wordpress1 bash

在這里插入圖片描述

4.3 docker的內部directory映射宿主機的directorymount

docker內容的路徑指向volume,這些volume實際上是宿主機的directory。即使docker process,這些volume也不會被刪除,啟動其他docker進行的時候,還能繼續利用。

sudo docker volume inspect wordpress_data2

在這里插入圖片描述
在這里插入圖片描述

4.4 停止所有容器

docker stop nginx wordpress1 wordpress2 mysql

4.5 啟動所有容器

docker start mysql wordpress1 wordpress2 nginx

4.6 刪除所有容器(數據會保留在卷中)

docker rm nginx wordpress1 wordpress2 mysql

4.7 刪除所有數據卷

docker volume rm mysql_data wordpress_data1 wordpress_data2

4.8 docker compose

可以進一步學習Docker Compose來簡化部署過程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87169.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87169.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87169.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode 刷題記錄 15 —— 二分查找

本系列為筆者的 Leetcode 刷題記錄,順序為 Hot 100 題官方順序,根據標簽命名,記錄筆者總結的做題思路,附部分代碼解釋和疑問解答,01~07為C語言,08及以后為Java語言。 01 搜索插入位置 class Solution {pub…

C++核心編程(動態類型轉換,STL,Lanmda)

一. 類型轉換 二. STL 1. 容器 1.1 Vector(常用) 1.1.1 概述 特性: 動態數組: 想象成一個會自動變長變短的數組。起始在內存中是連續存儲的。 隨機訪問: 通過[]運算符或at()方法,可以瞬間(…

【圖像處理入門】8. 數學基礎與優化:線性代數、概率與算法調優實戰

摘要 圖像處理的核心離不開數學工具的支撐。本文將深入解析線性代數、概率論在圖像領域的應用,包括矩陣變換與圖像幾何操作的關系、噪聲模型的數學描述,以及遺傳算法、粒子群優化等智能算法在參數調優中的實踐。通過理論結合代碼案例,幫助讀者掌握從數學原理到工程優化的完…

操作系統八股文

一.進程和線程的區別 1.本質區別和所屬關系是什么? 進程是資源調度以及分配的基本單位。 線程是CPU調度的基本單位。 一個線程屬于一個進程,一個進程可以擁有多個線程。 2.地址空間和內存 進程擁有獨立的虛擬地址空間。 線程沒有獨立的地址空間&#xf…

【uniapp】小程序中input輸入框的placeholder-class不生效

解決方法 1.去掉scoped <style></style> 2.額外寫一組style </style lang"scss" scoped> </style> <style> ::v-deep .textarea-placeholder { font-size: 24rpx; font-weight: 400; …

大模型訓練與推理顯卡全指南:從硬件選型到性能優化

在人工智能技術飛速發展的今天&#xff0c;大型語言模型(LLM)已成為推動行業進步的核心動力。然而&#xff0c;訓練和部署這些“數字巨人”需要強大的計算基礎設施作為支撐&#xff0c;其中GPU的選擇直接決定了模型開發的效率與成本。本文將全面剖析當前主流GPU型號在大模型訓練…

Linux Docker的環境配置與簡單使用

參考資料 Windows Docker Desktop設置中文【Docker 】Docker Desktop for Windows&#xff08;WSL 2&#xff09;安裝WSL 2 上的 Docker 遠程容器入門 目錄 一. 環境配置1.1 安裝WSL1.2 安裝配置 Docker Desktop1.3 VS Code 插件安裝1.4 下載項目&#xff0c;配置Dockerfile 二…

函數指針與指針函數:本質區別與高級應用

目錄 一、概念本質解析 1. 函數指針&#xff08;Function Pointer&#xff09; 2. 指針函數&#xff08;Pointer Function&#xff09; 二、函數指針深度剖析 1. 基礎用法示例 2. 高級應用&#xff1a;回調函數 3. 函數指針數組 三、指針函數深入探討 1. 基礎實現模式 …

【python】基于pycharm的海康相機SDK二次開發

海康威視二次開發相機管理 這段代碼基于python開發的&#xff0c;用了opencv的一些庫函數。實現了一個完整的海康機器人相機管理工具&#xff0c;支持多相機連接、參數配置、圖像采集和實時顯示功能。目前USB相機測試無誤&#xff0c;除了丟一些包。 1. 主要類結構 HKCameraM…

HTTP 協議各個主要版本的功能特點、核心原理、使用場景總結

我們來系統總結一下 HTTP 協議各個主要版本的功能特點、核心原理&#xff08;用圖示輔助說明&#xff09;以及典型使用場景。 核心演進目標&#xff1a; 提升性能、安全性、效率和靈活性。 1. HTTP/0.9 (1991) - 遠古雛形 功能特點: 極其簡單&#xff1a; 只支持 GET 方法。無…

Linux編程:3、進程通信-信號

一、進程通信概述 &#xff08;一&#xff09;進程通信的目的 在企業開發中&#xff0c;一個項目常常需要多個進程共同協作&#xff0c;而這些進程之間需要進行通信&#xff08;交換信息&#xff09;以便協作。本章內容主要圍繞信號講解&#xff0c;其它進程通信的常用方式請…

深度解析Vue.js組件開發與實戰案例

一、Vue.js組件化思想 Vue.js的核心思想之一就是組件化開發。組件系統是Vue的一個重要概念,它允許我們使用小型、獨立和通常可復用的組件構建大型應用。在Vue中,組件本質上是一個擁有預定義選項的Vue實例。 1.1 為什么需要組件化 代碼復用:避免重復造輪子,提高開發效率可…

TensorFlow 2.0 與 Python 3.11 兼容性

TensorFlow 2.0 與 Python 3.11 兼容性 TensorFlow 2.0 官方版本對 Python 3.11 的支持有限&#xff0c;可能出現兼容性問題。建議使用 TensorFlow 2.10 或更高版本&#xff0c;這些版本已適配 Python 3.11。若需強制運行&#xff0c;可通過以下方式解決依賴沖突&#xff1a; …

MyBatisPlus 全面學習路徑

MyBatisPlus 全面學習路徑 學習目錄 第一部分&#xff1a;MyBatisPlus 基礎 MyBatisPlus 簡介與核心特性快速入門與環境搭建核心功能&#xff1a;BaseMapper 與 CRUD 接口條件構造器&#xff08;Wrapper&#xff09;詳解ActiveRecord 模式主鍵策略與通用枚舉 第二部分&…

React16,17,18,19更新對比

文章目錄 前言一、16更新二、17更新三、18更新四、19更新總結 前言 總結react 16&#xff0c;17&#xff0c;18&#xff0c;19所更新的內容&#xff0c;并且部分會涉及到原理講解。 一、16更新 1、在16.8之前更新&#xff0c;還是基于class組件的升級和維護更新。并且更新了一…

【git】有兩個遠程倉庫時的推送、覆蓋、合并問題

當你執行 git pull origin develop(或默認的 git pull)時,Git 會把遠端 origin/develop 的提交合并到你本地的 develop,如果遠端已經丟掉(或從未包含)你之前在私庫(priv)里提交過的改動,那這些改動就會被「覆蓋」,看起來就像「本地修改沒了」。 要解決這個問題,分…

Spring Boot 集成國內AI,包含文心一言、通義千問和訊飛星火平臺實戰教程

Spring Boot 集成國內AI&#xff0c;包含文心一言、通義千問和訊飛星火平臺實戰教程 一、項目結構二、添加Maven依賴三、配置API密鑰 (application.yml)四、配置類1. AI配置類 (AiProperties.java)2. 啟用配置類 (AiConfig.java) 五、服務層實現1. 文心一言服務 (WenxinService…

Elastic Search 學習筆記

1. Elasticsearch 是什么&#xff1f;有哪些應用場景&#xff1f; Elasticsearch 整體原理流程&#xff1f; Elasticsearch 是一個為海量數據提供近實時搜索和分析能力的分布式搜索引擎&#xff0c;廣泛應用于全文檢索、日志分析和大數據處理場景中。 Elasticsearch 整體原理…

動態規劃之斐波那契數(一)

解法一&#xff1a;遞歸 class Solution { public:int fib(int n) {if(n<2) return n;return fib(n-1)fib(n-2);} }; 解法二&#xff1a;dp class Solution { public:int fib(int N) {if (N < 1) return N;int dp[2];dp[0] 0;dp[1] 1;for (int i 2; i < N; i) {…

如何設置爬蟲的訪問頻率?

設置爬蟲的訪問頻率是爬蟲開發中的一個重要環節&#xff0c;尤其是在爬取大型網站&#xff08;如1688&#xff09;時&#xff0c;合理的訪問頻率可以避免對目標網站造成過大負擔&#xff0c;同時也能降低被封禁的風險。以下是一些常見的方法和建議&#xff0c;幫助你合理設置爬…