Docker 镜像构建|Vue+SpringBoot+Go 多语言项目 Dockerfile 案例

目录

前端项目

项目地址:git clone https://gitee.com/dukuan/vue-project.git

复制代码
# cat Dockerfile
FROM node:16-alpine AS builder
COPY vue-project /opt/vue-project
WORKDIR /opt/vue-project
RUN npm install 
RUN npm run build 
FROM nginx:1.25
COPY --from=builder /opt/vue-project/dist /usr/share/nginx/html/
CMD ["nginx","-g","daemon off;"]

Java项目

项目地址:git clone https://gitee.com/dukuan/spring-boot-project.git

监听端口:8761

Java项目需要下载maven依赖,依赖默认存放在/root/.m2路径下;在Dockerfile编译过程中需要使用缓存挂载,进行重复利用。

复制代码
# cat Dockerfile
FROM maven:3.5.3 AS builder
COPY spring-boot-project /opt/spring-boot-project
WORKDIR /opt/spring-boot-project
RUN --mount=type=cache,target=/root/.m2 \
mvn clean package -DskipTests

FROM openjdk:8u342-jre
COPY --from=builder /opt/spring-boot-project/target/spring-cloud-eureka-0.0.1-SNAPSHOT.jar /opt/app.jar
WORKDIR /opt
CMD ["java","-jar","app.jar"]

GO语言项目

项目地址:https://gitee.com/dukuan/go-project.git

监听端口:8080

复制代码
# cat Dockerfile
FROM golang:1.15-alpine AS builder
# 设置国内go代理
ENV GOPROXY=https://goproxy.cn,direct
COPY go-project /opt/go-project
WORKDIR /opt/go-project
RUN --mount=type=cache,target=/go/pkg \
go mod download && go build -o app main.go
FROM alpine:3.23
WORKDIR /opt
COPY --from=builder /opt/go-project/app ./
CMD "./app"

# cat Dockerfile
FROM golang:1.15-alpine AS builder
# 设置国内go代理
ENV GOPROXY=https://goproxy.cn,direct
COPY go-project /opt/go-project
WORKDIR /opt/go-project
RUN --mount=type=cache,target=/go/pkg \
go mod download && go build -o app main.go
FROM alpine:3.23
WORKDIR /opt
COPY --from=builder /opt/go-project/app ./
CMD "./app"
相关推荐
爱网络爱Linux4 分钟前
【系列】每天一个 Linux 命令(53)startx 命令
linux·rhce·rhca·linux运维·linux命令大全·红帽认证
ZhengEnCi20 分钟前
L2A-一个域名如何访问多台云服务器-子域名、路径前缀与Nginx反向代理选型指南
linux·人工智能
M78佐菲32 分钟前
51单片机学习笔记:ds18b20要点整理
linux·笔记·嵌入式硬件·学习·51单片机
高亦真1 小时前
今天是学习嵌入式的第37天
linux·学习·算法
一个有温度的技术博主1 小时前
Linux 核心命令速查指南:从文件操作到系统运维
linux·服务器
小小的木头人2 小时前
Docker 环境下迁移 containerd 数据目录:从 `/var/lib/containerd` 到 `/data/containerd`
linux·docker
天远数科2 小时前
零信任架构实战:基于天远全能消金报告构建自动化信贷评估网关
运维·人工智能·架构·自动化
东城居士2 小时前
验证第一个Linux字符驱动程序
linux·嵌入式系统
网硕互联的小客服5 小时前
各个版本的Linux系统如何修改远程端口ssh端口?
linux·运维·服务器·网络
T1mzhou5 小时前
ARM64 Linux 6.10 内核驱动(12):dd.c:probe/ remove、延迟 probe
linux·服务器·c语言·arm开发·arm