網站首頁 編程語言 正文
相關配置安裝
安裝Docker
yum install docker
啟動服務 start docker
systemctl start docker
Docker中拉取nginx
鏡像
docker pull nginx
創建配置文件
我們需要在根目錄下創建Dockerfile文件和default.conf文件。
其中default.conf文件的名稱是什么無所謂,只要在配置文件中注意使用相同名稱即可。
Dokcerfile文件具體內容如下:
FROM nginx:latest # 將項目根目錄下dist文件夾下的所有文件復制到鏡像中 /usr/share/nginx/html/ 目錄下 COPY dist/ /usr/share/nginx/html/ COPY default.conf /etc/nginx/conf.d/default.conf
-
FROM nginx:latest
: 命令的意思該鏡像是基于 nginx:latest 鏡像而構建的。 -
COPY dist/ /usr/share/nginx/html/
:命令的意思是將項目根目錄下 dist 文件夾下的所有文件復制到鏡像中/usr/share/nginx/html/
目錄下。
這里鏡像中的目錄我們不要動,但需要保證我們項目的打包目錄是dist/
,或者自定義到你打包的目錄下。
-
COPY default.conf /etc/nginx/conf.d/default.conf
命令的意思是將 Nginx 目錄下的 default.conf 復制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置來替換 Nginx 鏡像里的默認配置。
這里鏡像中的目錄我們不要動,但需要保證我們編寫的文件名也為default.conf
,或者與你自己寫的文件名對應
default.conf
下面的配置直接照抄就好,特別注意,監聽的端口號并不需要動,這里的80端口指的是容器的端口,最后我們會將容器的端口映射到我們宿主服務器的端口,比如映射到8888端口。
8888:80
然后 注意修改為自己的服務器IP地址
完整配置:
upstream my_server{ server 121.41.4.33:3000; # 后端server 地址 keepalive 2000; } server { listen 80; #這里的端口號不要動,80端口指的是容器的端口,最后我們會將容器的端口映射到我們宿主服務器的端口,比如映射到8888端口 server_name 111.20.xxx.xxx; # 修改為docker服務宿主機的ip/域名 #charset koi8-r; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/error.log error; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html =404; } # 這里就是和vue本地代理的意思一樣,已api開頭的路徑都代理到本機的3000端口 location /api/ { proxy_pass http://my_server/api; proxy_set_header Host $host:$server_port; rewrite ^/api/(.*) /$1 break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
項目打包與部署
將打包項目,把dist
文件夾和剛剛創建的Dockerfile
,default.conf
放到同一目錄,并上傳到服務器。
比如,我的代碼存放位置是/home/test
目錄。
然后需要構建鏡像
docker build -t test .
docker build -t
我們并不需要動,
后面的test是我們構建的鏡像的名稱,.
代表需要進行構建的代碼的存放位置,這里是.
是因為我當期所在目錄就是/home/test
,并且我的項目的三個文件就位于/home/test
目錄下。
如果我們此時位于其他目錄,當前目錄下沒有要進行鏡像打包的文件,那就需要更改路徑。
比如:
dokcer build -t test /home/test
然后使用dokcer images
可以查看我們已經存在的鏡像
鏡像構建好后,我們就可以拿這個鏡像啟動一個容器
docker run -d -p 8888:80 --name test-image test
- -d 后臺方式運行
- -p 8888:80 端口映射,將宿主的8888端口映射到容器的80端口
- –name 容器名 鏡像名
然后我們可以使用docker ps
查看當前正在運行的容器
并且使用IP地址和端口號訪問當前的項目
注意
上面我們進行了端口映射,那就需要在服務器中開啟要使用的端口,
我們可以在云服務器中的安全組進行設置。
或者使用命令設置
查看已開放端口命令:firewall-cmd --list-all
- 查看防火墻狀態:active (running) 即是開啟狀態
systemctl status firewalld
- 查看已開發端口命令:firewall-cmd --list-all
- 新增防火墻開放端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 開放端口后需要重新加載防火墻:
firewall-cmd --reload
一些相關指令
如果我們不再需要這個容器和鏡像,
首先需要先停止這個容器,然后在移出容器和鏡像。
首先拿docker ps
找到指定容器的ID,
使用docker stop [ID]
停止容器
docker rm [ID]
移除容器
然后拿docker images
查看已存在的鏡像ID,
使用docker rmi [ID]
移除鏡像
可能我們的docker沒有設置開機啟動:
systemctl start docker # 啟動docker systemctl status docker # 查看docker的運行狀態
一個相關報錯:
關于:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
關于今天使用Docker時報了以下錯誤:
[centos@localhost ~]$ docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
分析報錯的原因:
報錯的翻譯:無法連接到 unix:///var/run/docker.sock 上的 Docker 守護程序。 docker 守護進程是否正在運行?
通過翻譯完報錯,可以看出報錯的原因是因為docker的服務沒啟動
解決方法:
1、首先啟動docker服務
[root@localhost /]# systemctl start docker
2、查看docker服務當前狀態
[root@localhost /]# systemctl status docker
就此,以上的報錯就成功解決!
開機自啟動Docker
為了避免以上的問題重復出現,可以設置docker開啟自啟動!
[root@localhost /]# systemctl enable docker
后續,我們將使用docker和github actions實現自動化部署。
總結
原文鏈接:https://blog.csdn.net/weixin_52834435/article/details/126967506
相關推薦
- 2022-10-06 C++?abs函數實際應用詳解_C 語言
- 2022-08-30 MongoDB數據庫基礎知識整理_MongoDB
- 2022-05-29 C#調用USB攝像頭的方法_C#教程
- 2023-06-04 Pandas中MultiIndex選擇并提取任何行和列_python
- 2022-12-07 C#?XML文件操作之相機參數保存和讀取_C#教程
- 2023-02-10 Python中如何自定義函數_python
- 2022-03-10 使用.Net6中的WebApplication打造最小API_自學過程
- 2022-12-26 Python?Metaclass原理與實現過程詳細講解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支