使用docker部署前后端

1.首先,已经默认拥有了一个拥有docker和docker compose的linux服务器。
本篇文章部署的是SpringBoot+Vue前后端分离项目,用了docker compose,但不多。
2.数据库
使用命令(表示拉取最新的MySQL)

docker pull mysql:latest

如果想指定版本,将冒号后面换成版本号即可,如:

docker pull mysql:5.7

这样就能得到一个mysql镜像。
使用以下命令查看已有的镜像。

docker images

使用以下命令创建并启动mysql容器(-d表示在后台运行,–name,定义容器名称,-p端口号,-e数据库密码,mysql:5.7镜像名称和版本号)

docker run -d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql_password mysql:5.7

这样就成功启动了mysql
如果有redis,部署方式与mysql相同。

3.部署后端
打包后端代码,打包前需要注意,将properties或者yml配置文件中的数据库连接属性,修改为和docker服务器相同的ip、登录密码(如果有redis,也需要修改相应的ip地址)
准备一个Dockerfile文件,这里有一份简单模板(如果是war包,将xxx.jar改为xxx.war即可)

FROM openjdk:17#jdk版本
VOLUME /home/test#当前所在目录
ADD wcjt.jar wcjt.jar #目录中的文件
EXPOSE 8082  #暴露的端口
ENTRYPOINT ["java","-jar","/wcjt.jar"] #执行的命令

将后端代码包,Dockerfile文件放入同一个文件夹中,例如/home/test
进入到/home/test路径下,执行命令(test是镜像名称,可以自定义)

docker build -t test . 

这样就准备好了一个镜像。
再执行命令:(-d表示在后台运行,–name,定义容器名称,-p端口号,test运行的镜像名称)

docker run -d --name test -p 8082:8082 test

这样后端就启动好了。
4.部署前端
使用命令(或用指定版本的方式),首先得到一个nginx镜像。

docker pull nginx:latest

准备两个配置文件,首先是docker-compose.yml
以下是简单模板

version: "3"
services: 
  vue_test:  
    container_name: vue-test #容器名称,可自定义
    image: nginx:latest #之前下载的nginx镜像
    ports: 
      - "8080:80"  #左侧为浏览器访问端口,右侧为nginx监听端口
    volumes:
      - ./dist/:/usr/share/nginx/html/ # 指定根html的文件目录
      - ./default.conf:/etc/nginx/conf.d/default.conf # 指定nginx的配置文件
    restart: always # 自动重启

另外一个配置文件是default.conf
简单模板

server {
		listen       80; # nginx监听端口
		server_name  localhost;

		gzip on;
		gzip_min_length 1k;
		gzip_http_version 1.0;
		gzip_comp_level 1;
		gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
		gzip_disable "MSIE [1-6].";
		gzip_vary on;
		
		location / {
			root   /usr/share/nginx/html; ## 对应docker-compose文件映射的跟html文件路径
			try_files $uri $uri/ @router;
			index  index.html index.htm;
			error_page 405 =200 http://$host$request_uri;
		}

		location ~ /data/ {
			root /usr/share/nginx/html;  # Vue静态文件的根目录  
		}
		location /api/ { ##前端接口所有的/api开头的接口都会被这里代理到下方proxy_pass的地址中
			proxy_pass http://192.168.0.1:8082/api/;   #这里写你后端的接口地址,服务器ip+后端端口号
			proxy_connect_timeout 6000;     #链接超时设置
			proxy_read_timeout 6000;        #访问接口超时设置
		}

		location @router {
			rewrite ^.*$ /index.html last;
		}
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root  /usr/share/nginx/html;
		}
}

打包前端代码,压缩。
进入到/home/vue路径下(可以使用任意空路径)
将两个配置文件和前端代码上传
解压缩前端代码(这里是.zip文件后缀,其他文件类型的解压缩命令可以去百度以下,dist.zip是打好的前端包)

unzip dist.zip

使用以下命令启动即可

docker-compose up -d 

前端部署完成,使用IP+配置的端口,比如:8080访问即可。
使用下面这个命令查看正在运行的容器

docker ps

或者是这样查看所有容器,包括没有运行的

docker ps -a

使用以下命令查看容器日志(name是容器名称)

docker logs name

使用以下命令停止和删除容器

docker stop name
docker rm name

删除镜像的命令是:镜像名称或者id

docker rmi nameOrId
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值