本页导航
article
Docker部署前后端分离项目
AI摘要
Docker 部署前后端分离项目,包含服务器要求和安装步骤
服务器要求
下面的建议不包含minio的内存占用,如需使用minio,请另外考虑
-
核心数和内存大小有两种方案:
- 2核4G(使用ES搜索策略)
- 2核2G(使用MySQL搜素策略)
-
带宽大小有两种方案:
- 使用oss对带宽没有要求(本人亲测:1M带宽+oss 访问速度很快)
- 使用minio需要大一点的带宽(小带宽也可以,但需要使用cdn加速)
docker的安装
以下命令基于CentOS环境。
-
下载工具
yum install -y yum-utils -
设置镜像的仓库
yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #配置阿里云的镜像 -
更新yum软件包索引
yum makecache fast -
安装docker相关配置
yum install -y docker-ce docker-ce-cli containerd.io -
启动docker
systemctl start docker # 查看当前版本号,是否启动成功 docker version # 设置开机自启动 systemctl enable docker
安装mysql
方式1: 无挂载模式
这种方式直接运行mysql之后,所有关于mysql的内容都在容器中,后续如果需要修改mysql的内容,需要手动进入容器内进行操作。且在宿主机上无备份,一旦容器被删除,数据也会被删除。
docker pull mysql //下载MySQL镜像
docker run --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -d mysql //启动MySQL
方式2: 数据卷挂载模式
和无挂载模式相对,通过数据卷挂载的方式运行容器,将容器内的部分重要文件映射到宿主机上。直接操作宿主机对应的映射文件就能和容器内作同步,方便操作的同时还能保证容器内的数据在宿主机上有一个备份。
下面的命令分别对mysql的日志文件、配置文件、数据文件进行了映射,你也可以自己修改。
-
docker方式
docker run -d -p 3306:3306 --restart=always -v /auroras/mysql/log:/var/log/mysql -v /auroras/mysql/data:/var/lib/mysql -v /auroras/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=密码 --name mysql mysql -
Dockerfile方式
提示和docker方式相对,通过Dockerfile的方式运行容器,不会出现时区问题,使数据库的时间与宿主机的时间相差8小时创建Dockerfile文件
# 使用官方MySQL8.0.34镜像作为基础映像
FROM mysql:8.0.34
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
# 设置MySQL的root用户密码(根据需要进行更改)
ENV MYSQL_ROOT_PASSWORD=xxxxxx
# 暴露MySQL默认端口(3306)和33060端口
EXPOSE 3306 33060
# 创建数据卷用于持久化存储MySQL数据、日志和配置
VOLUME /var/log/mysql
VOLUME /var/lib/mysql
VOLUME /etc/mysql/conf.d
创建启动文件mysql-start.sh
SOURCE_PATH=/usr/local/mysql
SERVER_NAME=mysqlimage
TAG=latest
SERVER_PORT=3306
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
if [ -n "$CID" ]; then
echo "存在容器$SERVER_NAME,CID-$CID"
docker stop $CID
echo "成功停止容器$SERVER_NAME,CID-$CID"
docker rm $CID
echo "成功删除容器$SERVER_NAME,CID-$CID"
fi
if [ -n "$IID" ]; then
echo "存在镜像$SERVER_NAME:$TAG,IID=$IID"
docker rmi $IID
echo "成功删除镜像$SERVER_NAME:$TAG,IID=$IID"
fi
echo "开始构建镜像$SERVER_NAME:$TAG"
cd $SOURCE_PATH
docker build -t $SERVER_NAME:$TAG .
echo "成功构建镜像$SERVER_NAME:$TAG"
docker run -d -p 3306:3306 -p 33060:33060 --restart=always -v /codegen/mysql/log:/var/log/mysql -v /codegen/mysql/data:/var/lib/mysql -v /codegen/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=xxxxxx --name mysql mysqlimage
echo "成功创建并运行容器$SERVER_NAME"
安装redis
docker pull redis //下载Redis镜像
docker run --name redis --restart=always -p 6379:6379 -d redis --requirepass "密码" //启动Redis
安装rabbitmq
docker pull rabbitmq:management //下载RabbitMQ镜像
docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management //启动RabbitMQ,默认guest用户,密码也是guest。
安装elasticsearch
docker pull elasticsearch:7.9.2
mkdir -p /home/elasticsearch/data/
mkdir -p /home/elasticsearch/config/
-
编写配置文件
echo 'http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml -
修改文件夹权限
chmod -R 777 /home/elasticsearch/ ls -l # 查看文件权限 -
启动elasticseach镜像
docker run --name elasticsearch -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /home/elasticsearch/config/elasticsearch.yml:/usr/shellare/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/data:/usr/shellare/elasticsearch/data \ -v /home/elasticsearch/plugins:/usr/shellare/elasticsearch/plugins \ -d elasticsearch:7.9.2
接下来我们就是拿浏览器访问啦。
在浏览器上输入:服务器IP地址:9200
可能出现的问题:
加载中...
最后更新于 2026-02-18 18:15