教你使用Docker?Compose一鍵部署前后端分離項(xiàng)目
前言
前面的博客介紹了使用 Docker 部署前后端分離項(xiàng)目:使用Docker部署前后端分離項(xiàng)目
接下來(lái)介紹如何使用 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ù)庫(kù)腳本
- 其中jar目錄存放打包好的jar應(yīng)用文件
- 其中conf目錄存放redis.conf和nginx.conf配置
- 其中html\dist目錄存放打包好的靜態(tài)頁(yè)面文件
- 數(shù)據(jù)庫(kù)mysql地址需要修改成ruoyi-mysql
- 緩存redis地址需要修改成ruoyi-redis
- 數(shù)據(jù)庫(kù)腳本頭部需要添加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ù)庫(kù)文件上傳
在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ù)庫(kù)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-redis8. 構(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)瀏覽器訪問(wèn)測(cè)試
可以正常顯示頁(yè)面,表名環(huán)境搭建成功。

補(bǔ)充:YAML文件格式及編寫注意事項(xiàng)
注:docker-compose使用yaml文件對(duì)容器進(jìn)行描述
YAML是一種標(biāo)記語(yǔ)言很直觀的數(shù)據(jù)序列化格式,可讀性高。類似于XML數(shù)據(jù)描述語(yǔ)言,語(yǔ)法比XML簡(jiǎn)單的很多。
YAML數(shù)據(jù)結(jié)構(gòu)通過(guò)縮進(jìn)來(lái)表示,連續(xù)的項(xiàng)目通過(guò)減號(hào)來(lái)表示,鍵值對(duì)用冒號(hào)分隔,數(shù)組用中括號(hào)括起來(lái),hash用花括號(hào)括起來(lái)。
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)引起來(lái)
6.布爾值(true、false、yes、no、on、off)必須用引號(hào)括起來(lái),這樣分 析器會(huì)將他們解釋為字符串。
總結(jié)
到此這篇關(guān)于使用Docker Compose一鍵部署前后端分離項(xiàng)目的文章就介紹到這了,更多相關(guān)Docker Compose部署前后端分離項(xiàng)目?jī)?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)目的完整步驟
- 手把手帶大家通過(guò)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的問(wèn)題(解決報(bào)錯(cuò))
這篇文章主要介紹了安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問(wèn)題,解決方法很簡(jiǎn)單只需我們自己手動(dòng)更新一下,我們根據(jù)提示去微軟官網(wǎng)下載最新版的wsl2安裝后即可正常打開,需要的朋友可以參考下2021-06-06
Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Linux 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à)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
Docker安裝Nginx并修改Nginx配置文件的方法詳解
這篇文章主要給大家介紹了關(guān)于Docker安裝Nginx并修改Nginx配置文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02
docker部署nginx服務(wù)的實(shí)現(xiàn)步驟
本文主要介紹了docker部署nginx服務(wù)的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08

