項目使用springboot2和Vue前后端分離開發模式,再整合,容器化部署。
主要說明下大體的流程,掃除心里障礙,期間遇到的問題請自行解決。
首先說下Vue打包:
1、在Vue項目目錄下運行命令打包:npm run build:prod --report
生成需要使用的dist文件,打包后會出現在項目目錄下。(目錄結構可能會不同)
按照如下方式整合到springboot項目中,resources在main目錄下。
(結構不同的話)一樣拆到static目錄下,static下面直接跟img、css、js等
注意static文件的層級位置,app.js、favicon.ico、index.html在static目錄下。
配置好以后,先本地運行下,確保能正常訪問並請求接口。
我遇到了靜態資源不能訪問的問題:在java中加入如下代碼后正常(上網搜的)
@Configuration @EnableAutoConfiguration @ComponentScan public class LocalConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } }
2、打成jar包,我使用的是maven方式,在此不詳述。
3、使用docker打包成鏡像
將jar包和Dockerfile文件放在一個目錄下。Dockerfile內容文件如下:
FROM java:8 VOLUME /tmp COPY personnel.jar app.jar RUN bash -c "touch /app.jar" EXPOSE 9100 ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=test", "--server.port=9100", "/log/app.log"]
java:8 Java版本號
COPY personnel.jar app.jar 復制jar包為app.jar
9100 是項目端口號
其它的設置不用修改,具體的含義我也不清楚,望不吝賜教。
在當前目錄執行命令:
docker build -t project-name . 打包命令 注意有個``.`` (首次打包會比較慢)
docker images 查看image命令
docker run -d -p 8080:9100 project-name
運行Image命令,9100是項目接口,8080是鏡像端口,鏡像運行后使用localhost:8080訪問。
我們項目是直接把鏡像推到阿里雲容器中,阿里雲上有現成的推送代碼,不再贅述。
簡單的流程,希望能幫助找到方向。