linux docker部署springboot+vue项目mysite

一、安装docker

1、安装命令

yum -y install docker

2、查看安装

docker  -v

3、启动docker

systemctl start docker

4、查看docker状态

systemctl status docker

5、使用阿里云镜像加速,登录https://cr.console.aliyun.com/cn-shanghai/instances/mirrors,拿到地址https://****.mirror.aliyuncs.com"(自己的地址)。不用vi,直接写文件,也可以。

vim /etc/docker/daemon.json

添加以下内容,esc到命令行 :wq,保存退出

{
  "registry-mirrors": ["https://****.mirror.aliyuncs.com"]
}

6、重启服务

systemctl daemon-reload
systemctl restart docker
systemctl enable docker.service  //设置开机自启
docker info //查看配置信息

7、安装docker图形界面(可以不用,直接使用命令行)

docker search ui
docker pull docker.io/uifd/ui-for-docker  

8、启动图形镜像

docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker

命令说明:
docker run 【参数】 镜像名 “ 为运行镜像的最基本命令
-d : 即-detach =true , 后台运行
-p : 即 -publish 指定发布的端口 ,映射本机端口到docker容器端口,前面的端口(9000)是本机的端口,后一个端口是docker 运行容器的端口(9000)。(外部访问本机端口,即等于访问docker容器端口)
-privileged: 赋予这个容器一些权限可以执行别的操作
-v :挂载,前面的是本机目录,后面的是容器执行创建的虚拟目录
浏览器访问:http://xxx.xxx.xxx.xxx:9000

二、部署环境(看项目所需)

1、安装mysql
(1)拉取指定版本
docker pull mysql:5.7.27

(2)创建容器实例

docker run -d --name mysiteDB -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.20

命令说明: -d 后台运行,–name 设置容器名称mysiteDB 是用户自定义的容器名称;-p 设置端口映射,第一个3306是当前主机的端口,第二个3306指容器中的端口;-e 设置root用户密码为123456;最后的mysql:5.7.27 可以用imageID代替,代表用于创建容器的镜像。
(3)数据库操作

  • 进入容器
docker exec -it mysiteDB  bash
  • 进入数据库
mysql -uroot -p
  • 授权
grant all privileges on *.* to root@"%" identified by "密码" with grant option;
flush privileges;
exit //退出
  • 使用数据库连接工具连接,navicat。

2、安装elasticsearch
(1)拉取镜像(注意适配自己项目的版本,否则项目会出错)

docker pull elasticsearch:6.8.3

(2)运行容器

建议使用(在运行时就设置jvm,不然服务器内存太小,会卡死):
docker run -d -e ES_JAVA_OPTS="-Xms128m -Xmx256m" -p 9200:920 0 -p  9300:9300 --name myes 446946b24cdd
-------
docker run -d --name mysiteES -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"  elasticsearch:6.8.3

命令说明:
–name mysiteES:将容器命名为 mysiteES
-p 9200:9200:将本机的9200端口映射到容器9200端口
-p 9300:9300:将本机的9300端口映射到容器9300端口,目的是集群互相通信
-e “discovery.type=single-node”:单例模式
elasticsearch:6.8.3 镜像名称,可用代替。

(3)配置跨域

  • 进入容器
docker exec -it   mysiteES  /bin/bash
  • 进行配置
ls //查看目录文件
cd config //进入配置
vi elasticsearch.yml 
  • 添加配置,保存退出
http.cors.enabled: true
http.cors.allow-origin: "*"

(4)修改内存(阿里云内存不足,默认4G。初始化Xms,最大Xmx)

cd config
vi  jvm.options

修改,保存退出

-Xms512m
-Xmx512m

(4) 安装ik分词器

  • 进入容器
    docker exec -it mysiteES /bin/bash

  • 在线下载安装(注意版本,与elasticsearch一致,修改版本号)

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.3/elasticsearch-analysis-ik-6.8.3.zip

若在线下载出错,则网址https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.3/elasticsearch-analysis-ik-6.8.3.zip下载后解压,更改为ik,上传到服务器,再复制到容器内。

docker cp 服务器文件路径  docker容器名字:容器路径
docker cp ik mysiteES:/usr/share/elasticsearch/plugins
  • 退出重启镜像
exit
docker restart mysiteES

3、注意: 设置开机自动启动:避免重启计算机后,要去重新启动容器。

  • 设置docker自动启动
systemctl enable docker.service
  • 设置容器自动启动
    创建实例时添加参数
docker run --restart=always

若已有容器,且已经启动,则使用以下命令,设置重启。

docker update --restart=always  容器ID

4、如果出错,可以查看日志(elasticsearch):

docker logs -f 容器名

并找到修改出错的文件,vi修改

find / -name 文件名.后缀

三、部署后端

1、maven打包。然后进入包目录,用java -jar 包,运行试一下,是否会出错,一定要先试一下。
在这里插入图片描述
在这里插入图片描述

2、linux新建目录,编写Dockerfile文件,把Dockerfile和jar包放在目录下。
在这里插入图片描述

Dockerfile内容:

FROM java:8
VOLUME /tmp
COPY mysiteapi.jar api.jar
RUN bash -c "touch /api.jar"
EXPOSE 9090
ENTRYPOINT ["java", "-jar", "api.jar", "--spring.profiles.active=prod", "--server.port=9090", "> /log/mysiteapi.log"]

说明:
FROM java:8 ,基础依赖为JDK1.8镜像;
VOLUME /tmp指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录,效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp;
COPY api.jar api.jar,将api.jar 复制到docker中并命名为api.jar
RUN bash -c “touch /api.jar” ,项目中有html页面时需要。
EXPOSE 9090 ,容器暴露的端口号;
ENTRYPOINT [“java”, “-jar”, “api.jar”, “–spring.profiles.active=prod”, “–server.port=9090”, “> /log/mysiteapi.log”],相当于前面的 java -jar xxx.jar 也就是运行这个项目,并自定义一些参数,运行的配置文件为生产环境。
3、制作镜像
cd到上一步建立存放文件的文件夹,执行制作镜像命令(注意后面的点)

cd SpringbootDocker
docker build -t mysiteapi .

在这里插入图片描述

4、创建并启动容器(设置开机自启参数)

docker run -d -p 9090:9090 mysiteapi   --restart=always

四、部署前端

1、打包
vs控制台执行打包命令:

npm run build

完成后,多出dist目录
在这里插入图片描述
2、在liunx创建目录,放在三个文件
(1)创建Dockerfile:

FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

说明:
FROM nginx 使用nginx基础镜像;
COPY dist/ /usr/share/nginx/html/ 放置静态资源到此目录下;
COPY nginx/default.conf /etc/nginx/conf.d/default.conf 替换默认的配置文件

(2)创建Nginx文件夹,其下添加default.conf文件:

server {
listen       8080;
server_name  47.102.212.xxx;
#charset koi8-r;
access_log  /var/log/nginx/host.access.log  main;
error_log  /var/log/nginx/error.log  error;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}}

说明:
listen 8080对应vue配置项目端口;
server_name 47.102.212.xxx; 对应linux的ip地址
(3)上传打包好的dist
在这里插入图片描述

3、进入目录构建镜像文件

cd  VueNginx
docker build -t mysitevue .

4、生成容器,运行

docker run -p 80:8080 -d --name mysitefront mysitevue 

项目Git地址:https://github.com/zhuyanxue/mysite_back(后端),https://github.com/zhuyanxue/mysite_front(前端)。

5、出现

五、docker常用命令

docker run -d --name //新建容器,自定义容器名 镜像ID或镜像名 d后台运行
docker ps // 查看所有正在运行容器
docker stop containerId // containerId 是容器的ID
docker ps -a // 查看所有容器
docker ps -a -q // 查看所有容器ID
docker stop $(docker ps -a -q) // stop停止所有容器
docker rm $(docker ps -a -q) // remove删除所有容器
docker images //展示所有本地镜像
docker start 容器名或容器ID //运行容器
docker stop 容器名或容器ID //停止运行容器
docker rm -f 容器名或容器ID //删除容器
docker exec -it 容器名或容器ID bash //进入容器内容bash
exit //退出容器命令:
service stop docker //关闭docker服务
docker logs -t 容器id //查看容器运行日志
systemctl restart docker //重启docker

参考文章:
https://blog.csdn.net/qq_38634213/article/details/103988584
https://blog.csdn.net/qq_38634213/article/details/103989006,
https://blog.csdn.net/qq_38634213/article/details/103989348,
https://blog.csdn.net/funtaster/article/details/83274727,
https://www.cnblogs.com/powerbear/p/11298135.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值