vue部分
在vue项目根目录新建 Dockerfile文件和nginx.conf文件
Dockerfile文件
FROM nginx:1.15-alpine
#从dockerHub上拉取nginx
COPY dist /usr/share/nginx/html
#把vue项目打包后的 dist文件夹放在服务器的/usr/share/nginx/html 路径下
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
#把项目里的nginx.conf 退换掉nginx里的nginx.conf
EXPOSE 80
#容器外露到服务器的端口
nginx.conf文件
server {
listen 80;
#监听端口
root /usr/share/nginx/html;
#静态资源所在目录
index index.html;
#默认主页
charset utf-8;
location / {
try_files $uri $uri/ /index.html;
}
#/-资源路径 有uri 访问uri没有就访问index.html
}
springBoot部分
一样项目根路径新建Dockerfile文件
Dockerfile文件
FROM openjdk:8-jdk-alpine
#从dcokerhub上拉取openjdk8
VOLUME /tmp
#在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
ADD target/*.jar app.jar
#拷贝打包后的jar包并且重命名
EXPOSE 8081
#容器外露到服务器的端口
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dserver.port=8081","-jar","/app.jar"]
# 为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
把前,后台项目放到一个文件夹里,其实怎么放都行,为了方便,然后在文件夹根目录新建docker-compose.yml文件
docker-compose.yml文件
version: "3"
services:
vue:
build: ./vueElementUiDemo
restart: always
ports:
- 9527:80
depends_on:
- demo
demo:
build: ./demo
restart: always
ports:
- 8081:8081
depends_on:
- mysql
environment:
DATABASE_URL: jdbc:mysql://mysql:3306/study?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
DATABASE_USER: lp
DATABASE_PASSWORD: lp123456
#注意DATABASE_URL 因为用了mysql8 部属后有问题 后面加&allowPublicKeyRetrieval=true
mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: study
MYSQL_USER: lp
MYSQL_PASSWORD: lp123456
服务器部署部分
我的项目上传在gitee上,so git clone
git clone https://gitee.com/XXX/XXXX.git
vue打包
cd vueXXX
npm install
npm run build
springBoot打包
cd springBootXXX
mvn clean package
mvn install
执行docker-compose.yml
cd 文件夹根目录
docker-compose up --build
可能服务器没有安装dcokerCompose需要安装
参考官方文档:https://docs.docker.com/compose/install/
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
容器内执行sql 脚本
$ docker cp study.sql 6ac113bac6a3:/tmp
//6ac113bac6a3 为 mysql运行镜像ID
$ docker exec -it 6ac113bac6a3 /bin/bash
tmp# mysql -u root -p
//输密码 root
show databases;
use study;
source /tmp/study.sql
ok
请求后台