首页 > 其他分享 >Dockerfile构建前后端分离项目

Dockerfile构建前后端分离项目

时间:2024-07-10 21:11:17浏览次数:15  
标签:配置文件 分离 nginx 构建 conf mysql docker Dockerfile

【Dockerfile构建前后端分离项目】

1. 创建专用网络

docker network create appnet

2. 构建MYSOL服务器镜像

2.1. 准备工作

创建专用目录

mkdir app/db -p

获取配置文件

# 创建一个存放数据库配置文件的文件夹

cd app/db

# 创建临时mysql容器,目的是将里面的配置文件拷贝出来

docker run --name temp -itd -e MYSOL_ROOT_PASSWORD=123456 mysql

# 将主配置文件拷贝出来

docker cp temp:/etc/mysql/my.cnf .

# 将其他次配置文件拷贝出来

docker cp temp:/etc/mysql/conf.d .

# 删除临时容器

docker rm -f temp

修改字符集,目的是为了初始化脚本的.sql文件里面的中文不会乱码

# 修改主配置文件

vim my.cnf

[mysql]

default-character-set=utf8mb4

[mysql.server]

default-character-set=utf8mb4

准备初始化脚本×××.sql (如果有的话)

2.2. 构建脚本

# 创建Dockerfile文件

vim Dockerfile

# 指定基础镜像

FROM mysql:latest

# 拷贝数据库初始化脚本到指定目录,可以不设置

COPY ×××.sql /docker-entrypoint-initdb.d

2.3. 执行构建镜像

docker build -f Dockerfile -t myappdb .

2.4. 运行容器 (上边代码为逐行解释,不能粘贴过去运行,下边代码可以粘贴过去直接运行)

docker run --name appDB -d \ # 运行容器,名字为appDB 后台运行

-p 3306:3306 \ # 映射端口号为3306

-v ./my.cnf:/etc/mysql/my.cnf \ # 将配置文件挂载到指定目录

-v ./conf.d:/etc/mysql/conf.d \ # ~~

-v ./data:/var/lib/mysql \ # ~~

-e MYSQL_ROOT_PASSWORD=root \ # 设置环境变量,密码为root

--network appnet \ # 设置自定义的网络

myappdb # 运行的镜像名称

docker run --name appDB -d \

-p 3306:3306 \

-v ./my.cnf:/etc/mysql/my.cnf \

-v ./conf.d:/etc/mysql/conf.d \

-v ./data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=root \

--network appnet \

myappdb

3. 构建后端服务器镜像

3.1. 淮备工作

创建专用目录

mkdir app/backend -p

创建后端配置文件

cd app/backend

vim application.yml

spring:

datasource:

url:jdbc:mysql://appDB:3306/testdb #重点关注数据库服务器的IP使用的是容器名字

后端文件打包

idea -> maven -> clean && package -> myapp.jar

3.2. 构建脚本

# 创建Dockerfile文件

vim Dockerfile

#指定基础镜像(因 SpringBoot3 要求jdk17+)

FROM openjdk:17

#工作目录app

WORKDIR /app

#拷贝jar包

COPY myapp.jar .

#暴露后端项目的端口8899

EXPOSE 8899

#默认执行jar

CMD ["java","-jar","myapp.jar"]

3.3. 执行构建

docker build -t myappbackend .

3.4. 运行容器

docker run --name appBackend -d \

-p 8086:8086 \

-v ./application.yml:/app/application.yml \

--network appnet \

myappbackend

4. 构建前端服务器镜像

4.1. 准备工作

创建专用目录

mkdir app/frontend/html -p

前端文件打包

vscode -> 终端 -> npm run build -> dist -> app/frontend/html

获取配置文件

首先进入frontend文件夹下

cd app/frontend

#以下命令会先创建一个临时nginx容器,然后将配置文件复制到指定文件夹,再删除临时容器

docker run --name temp -itd nginx

docker cp temp:/etc/nginx/nginx.conf ./nginx.conf

docker cp temp:/etc/nginx/conf.d .

docker rm -f temp

修改配置文件

vim ./conf.d/default.conf

upstream myapp.com{

server appBackend:8086;

}

server{

location / {

root /usr/share/nginx/html;

index index.html index.htm;

try_files $uri /index.html;

}

location /apis/ {

rewrite ^.+apis/?(.*)$ /$1 break;

proxy_pass http://myapp.com;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

4.2. 构建脚本

# 创建Dockerfile文件

vim Dockerfile

#指定基础镜像(nginx)

FROM nginx:latest

#拷贝前端文件

COPY ./html /usr/share/nginx/html

#暴露前端项目的端口80

EXPOSE 80

4.3. 执行构建

docker build -t myappfrontend .

4.4. 运行容器

docker run --name appFrontend -d \

-p 80:80 \

-v ./nginx.conf:/etc/nginx/nginx.conf \

-v ./conf.d:/etc/nginx/conf.d \

--network appnet \

myappfrontend

 

参考地址:Dockerfile实战-构建前后端分离项目_哔哩哔哩_bilibili

标签:配置文件,分离,nginx,构建,conf,mysql,docker,Dockerfile
From: https://www.cnblogs.com/ZXDZXD/p/18294979

相关文章

  • Perl词法作用域:自定义编程环境的构建术
    ......
  • 构建未来对话:从零开始实现基于Vue 3的AI聊天页面
    大家好,今天我们将一起探索如何从零开始,使用Vue3构建一个AI对话页面。这个过程不仅会让我们了解Vue3的新特性,还会让我们对构建交互式Web应用有一个全新的认识。如果你是编程新手,别担心,我会用通俗易懂的语言,确保你能够跟上每一步。第一步:搭建Vue3工程首先,我们需要搭建Vue3......
  • CDGA|数据治理:构建高质量数据要素供给体系的核心在于畅通流通渠道
    随着数字化时代的到来,数据已经成为驱动经济社会发展的核心要素。数据治理作为确保数据质量、保障数据安全、促进数据价值实现的重要手段,其重要性日益凸显。在数据治理的众多环节中,构建高质量数据要素供给体系尤为关键,而该体系的核心则在于畅通高质量数据要素的流通渠道。高质......
  • Defensor 4.5:构建数据资产为中心的安全运营体系
    5月31日“向星力”未来数据技术峰会上,星环科技重磅发布数据安全管理平台Defensor4.5版本。新版本引入了以数据资产为中心的数据安全运营体系,通过智能化大模型技术,帮助企业快速、精准地识别核心重要资产;建设全局的数据安全策略中心,通过多维度访问控制、策略地图、策略巡检和智能......
  • 利用BLIP和BLIP-2进行图像与文本特征提取:如何构建一个多模态搜索引擎
    来源网址:https://medium.com/@enrico.randellini/image-and-text-features-extraction-with-blip-and-blip-2-how-to-build-a-multimodal-search-engine-a4ceabf51fbe结合ViT和LLM的力量进行图像-文本检索任务引言图像与语言看似属于两个不同的领域,以及与之相关的常见问题。......
  • 构建高效指标体系:应对挑战与优化策略
    原文:https://mp.weixin.qq.com/s/rvwI91a0n22UNjmau8s2Nw构建高效指标体系健全的指标体系是企业决策的基石。然而,在实际操作中,指标体系的构建和维护往往面临诸多挑战。本文将详细介绍构建指标体系中存在的难点以及指标域的划分,并提供系统化的解决方案,助力企业建立更加精准、高......
  • 一款EF Core下高性能、轻量级针对分表分库读写分离的解决方案
    前言今天大姚给大家分享一款EFCore下高性能、轻量级针对分表分库读写分离的解决方案,开源(ApacheLicense)的EFCore拓展程序包:ShardingCore。ShardingCore项目介绍ShardingCore是一款开源、简单易用、高性能、普适性,针对EFCore生态下的分表分库的扩展解决方案,支持EFCore2+......
  • 使用Terminal.Gui构建功能强大的.NET控制台应用
    前言前段时间分享了一个库帮你轻松的创建漂亮的.NET控制台应用程序-Spectre.Console的文章教程,然后就有小伙伴提问:.NET控制台应用需要应对强交互性的场景,有什么好的解决方案?,今天大姚给大家分享一款适用于.NET的跨平台终端UI工具包,帮助大家快速构建功能强大的.NET控制台应......
  • LAMP万字详解(概念、构建步骤)
    目录LAMPApache起源主要特点软件版本编译安装httpd服务器编译安装的优点操作步骤准备工作编译安装优化执行路径添加服务守护进程配置httpd查看Web站点的访问情况虚拟主机类型部署基于域名的虚拟主机为虚拟主机提供域名解析(两个域名)不同ip访问不同的内容......
  • 使用Python Flask快速构建一个api server
    使用flask快速构建一个apiserver代码如下:fromflaskimportFlask,jsonify,requestapp=Flask(__name__)#定义一个路由,当访问根路径时返回欢迎信息@app.route('/')defhome():return'Hello,thisisasimpleAPI!'#定义一个路由,接受GET请求并返回JSON响......