教你使用Docker?Compose一鍵部署前后端分離項(xiàng)目
前言
前面的博客介紹了使用 Docker 部署前后端分離項(xiàng)目:使用Docker部署前后端分離項(xiàng)目
接下來介紹如何使用 Docker Compose部署前后端分離項(xiàng)目,依舊以若依項(xiàng)目為例。
一、安裝Docker和docker Compose
(1)Docker安裝
[root@zy-host /]# yum install -y yum-utils device-mapper-persistent-data lvm2 [root@zy-host /]# yum install docker-ce docker-ce-cli containerd.io
(2)Docker Compose安裝
[root@zy-host home]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose [root@zy-host home]# chmod +x /usr/local/bin/docker-compose
(3)查看版本信息
[root@zy-host home]# docker --version Docker version 20.10.22, build 3a2c30b [root@zy-host home]# docker-compose --version docker-compose version 1.25.1, build a82fef07
二、準(zhǔn)備工作
這里可以參考若依官方文檔:集成docker實(shí)現(xiàn)一鍵部署| RuoYi
1. 新建工作目錄
在 /home 目錄下新建目錄 ruoyi2,作為工作目錄。
[root@zy-host home]# mkdir ruoyi2
2. 工作目錄結(jié)構(gòu)
- 其中db目錄存放ruoyi數(shù)據(jù)庫腳本
- 其中jar目錄存放打包好的jar應(yīng)用文件
- 其中conf目錄存放redis.conf和nginx.conf配置
- 其中html\dist目錄存放打包好的靜態(tài)頁面文件
- 數(shù)據(jù)庫mysql地址需要修改成ruoyi-mysql
- 緩存redis地址需要修改成ruoyi-redis
- 數(shù)據(jù)庫腳本頭部需要添加SET NAMES 'utf8';(防止亂碼)
[root@zy-host ruoyi2]# tree ./ ./ ├── conf │ ├── nginx.conf │ └── redis.conf ├── db ├── docker-compose.yml ├── html │ └── dist ├── jar ├── mysql-dockerfile ├── nginx-dockerfile ├── redis-dockerfile └── ruoyi-dockerfile
nginx.conf文件內(nèi)容:
[root@zy-host conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /home/ruoyi/projects/ruoyi-ui; try_files $uri $uri/ /index.html; index index.html index.htm; } location /prod-api/{ proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://ruoyi-server:8080/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
redis.conf文件內(nèi)容:
# requirepass 123456
3. 后臺(tái)打包
修改后臺(tái)配置文件,修改MySQL地址為和Redis地址為 云服務(wù)器IP
package 打包,將打好的jar包上傳至工作目錄下的 jar 目錄中:
4. 前臺(tái)打包
前臺(tái)打 dist 包,上傳至工作目錄的 html 目錄下:
# 構(gòu)建生產(chǎn)環(huán)境 npm run build:prod
5. 數(shù)據(jù)庫文件上傳
在sql文件頭部添加:SET NAMES 'utf8'; 防止亂碼,然后將sql文件上傳至工作目錄的 db 目錄下:
6. 編寫Dockerfile
(1)mysql-dockerfile
mysql-dockerfile 文件內(nèi)容如下:
# 基礎(chǔ)鏡像 FROM mysql:5.7 # author MAINTAINER ruoyi # 執(zhí)行sql腳本 ADD ./db/*.sql /docker-entrypoint-initdb.d/
(2)nginx-dockerfile
nginx-dockerfile 文件內(nèi)容如下:
在容器內(nèi)創(chuàng)建 /home/ruoyi/projects/ruoyi-ui目錄,并將該目錄與宿主機(jī)掛載。
# 基礎(chǔ)鏡像 FROM nginx # author MAINTAINER ruoyi # 掛載目錄 VOLUME /home/ruoyi/projects/ruoyi-ui # 創(chuàng)建目錄 RUN mkdir -p /home/ruoyi/projects/ruoyi-ui # 指定路徑 WORKDIR /home/ruoyi/projects/ruoyi-ui # 復(fù)制conf文件到路徑 COPY ./conf/nginx.conf /etc/nginx/nginx.conf # 復(fù)制html文件到路徑 COPY ./html/dist /home/ruoyi/projects/ruoyi-ui
(3)redis-dockerfile
redis-dockerfile文件內(nèi)容如下:
# 基礎(chǔ)鏡像 FROM redis # author MAINTAINER ruoyi # 掛載目錄 VOLUME /home/ruoyi/redis # 創(chuàng)建目錄 RUN mkdir -p /home/ruoyi/redis # 指定路徑 WORKDIR /home/ruoyi/redis # 復(fù)制conf文件到路徑 COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf
(4)ruoyi-dockerfile
ruoyi-dockerfile文件內(nèi)容如下:
# 基礎(chǔ)鏡像 FROM java:8 # author MAINTAINER ruoyi # 掛載目錄 VOLUME /home/ruoyi # 創(chuàng)建目錄 RUN mkdir -p /home/ruoyi # 指定路徑 WORKDIR /home/ruoyi # 復(fù)制jar文件到路徑 COPY ./jar/*.jar /home/ruoyi/ruoyi.jar # 啟動(dòng)應(yīng)用 ENTRYPOINT ["java","-jar","ruoyi.jar"]
7. 編寫 docker-compose.yml 文件
docker-compose.yml 文件內(nèi)容如下:
version : '3' services: ruoyi-mysql: container_name: ruoyi-mysql image: mysql:5.7 build: context: . dockerfile: mysql-dockerfile ports: - "3306:3306" volumes: - ./mysql/conf:/etc/mysql/conf.d - ./mysql/logs:/logs - ./mysql/data:/var/lib/mysql command: [ 'mysqld', '--innodb-buffer-pool-size=80M', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-time-zone=+8:00', '--lower-case-table-names=1' ] environment: MYSQL_DATABASE: 'ry-vue' MYSQL_ROOT_PASSWORD: zhangyin #數(shù)據(jù)庫root用戶密碼 ruoyi-redis: container_name: ruoyi-redis image: redis build: context: . dockerfile: redis-dockerfile ports: - "6379:6379" volumes: - ./conf/redis.conf:/home/ruoyi/redis/redis.conf - ./redis/data:/data command: redis-server /home/ruoyi/redis/redis.conf ruoyi-nginx: container_name: ruoyi-nginx image: nginx build: context: . dockerfile: nginx-dockerfile ports: - "80:80" volumes: - ./html/dist:/home/ruoyi/projects/ruoyi-ui - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./nginx/logs:/var/log/nginx - ./nginx/conf.d:/etc/nginx/conf.d depends_on: - ruoyi-server links: - ruoyi-server ruoyi-server: container_name: ruoyi-server build: context: . dockerfile: ruoyi-dockerfile ports: - "8080:8080" volumes: - ./ruoyi/logs:/home/ruoyi/logs - ./ruoyi/uploadPath:/home/ruoyi/uploadPath depends_on: - ruoyi-mysql - ruoyi-redis links: - ruoyi-mysql - ruoyi-redis
8. 構(gòu)建并啟動(dòng)
(1)構(gòu)建docker服務(wù)
[root@zy-host ruoyi2]# docker-compose build
(2)啟動(dòng)docker容器
[root@zy-host ruoyi2]# docker-compose up -d
(3)查看容器
[root@zy-host ruoyi2]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c61cd8b2b476 nginx "/docker-entrypoint.…" 47 seconds ago Up 45 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp ruoyi-nginx c39f8deda702 ruoyi2_ruoyi-server "java -jar ruoyi.jar" 48 seconds ago Up 46 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp ruoyi-server 3d5daf878fbb redis "docker-entrypoint.s…" 49 seconds ago Up 48 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp ruoyi-redis 58568121a480 mysql:5.7 "docker-entrypoint.s…" 49 seconds ago Up 48 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp ruoyi-mysql
(4)瀏覽器訪問測(cè)試
可以正常顯示頁面,表名環(huán)境搭建成功。
補(bǔ)充:YAML文件格式及編寫注意事項(xiàng)
注:docker-compose使用yaml文件對(duì)容器進(jìn)行描述
YAML是一種標(biāo)記語言很直觀的數(shù)據(jù)序列化格式,可讀性高。類似于XML數(shù)據(jù)描述語言,語法比XML簡單的很多。
YAML數(shù)據(jù)結(jié)構(gòu)通過縮進(jìn)來表示,連續(xù)的項(xiàng)目通過減號(hào)來表示,鍵值對(duì)用冒號(hào)分隔,數(shù)組用中括號(hào)括起來,hash用花括號(hào)括起來。
YAML文件格式注意事項(xiàng):
1.不支持制表符tab鍵縮進(jìn),需要使用空格縮進(jìn)
2.通常開頭縮進(jìn)2個(gè)空格
3.字符后縮進(jìn)1個(gè)空格,如冒號(hào)、逗號(hào)、橫桿
4.用井號(hào)注釋
5.如果包含特殊字符用單引號(hào)引起來
6.布爾值(true、false、yes、no、on、off)必須用引號(hào)括起來,這樣分 析器會(huì)將他們解釋為字符串。
總結(jié)
到此這篇關(guān)于使用Docker Compose一鍵部署前后端分離項(xiàng)目的文章就介紹到這了,更多相關(guān)Docker Compose部署前后端分離項(xiàng)目內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 利用docker-compsoe部署前后端分離的項(xiàng)目方法
- Docker部署前后端分離項(xiàng)目的實(shí)現(xiàn)示例
- docker-compose+nginx部署前后端分離的項(xiàng)目實(shí)踐
- 使用Jenkins+docker打包部署后端服務(wù)的實(shí)現(xiàn)
- Docker+Nginx打包部署前后端分離步驟實(shí)現(xiàn)
- 使用Docker部署前后端分離項(xiàng)目的完整步驟
- 手把手帶大家通過Docker部署前后端分離項(xiàng)目(親測(cè)可用)
- Docker部署前后端分離項(xiàng)目的三種方式小結(jié)
- 用docker一鍵部署前后端分離項(xiàng)目的詳細(xì)流程
- Docker部署后端項(xiàng)目的實(shí)現(xiàn)步驟
相關(guān)文章
安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題(解決報(bào)錯(cuò))
這篇文章主要介紹了安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題,解決方法很簡單只需我們自己手動(dòng)更新一下,我們根據(jù)提示去微軟官網(wǎng)下載最新版的wsl2安裝后即可正常打開,需要的朋友可以參考下2021-06-06Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Linux Docker運(yùn)行springboot項(xiàng)目的步驟詳解
這篇文章主要介紹了Linux Docker運(yùn)行springboot項(xiàng)目的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程
這篇文章主要給大家介紹了使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程,文中給出了詳細(xì)的解決方法,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06Docker安裝Nginx并修改Nginx配置文件的方法詳解
這篇文章主要給大家介紹了關(guān)于Docker安裝Nginx并修改Nginx配置文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02docker部署nginx服務(wù)的實(shí)現(xiàn)步驟
本文主要介紹了docker部署nginx服務(wù)的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08