vue项目构建
# STAGE 1
FROM node:12-alpine AS build
WORKDIR /app
COPY package.json ./
RUN npm config set registry https://registry.npm.taobao.org/
RUN npm install
COPY . /app
RUN npm run build
# STAGE 2
FROM nginx:stable-alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
build.sh
docker build -t myapp .
docker run -p 25698:80 --name myapp myapp
springboot 项目多阶段构建
pom.xml 中指定镜像加速(maven 容器中不好指定)
<repositories>
<repository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun-plugin</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
dockerfile
FROM maven:3-jdk-8 AS build
WORKDIR /app
COPY . /app
RUN mvn clean install -Dmaven.test.skip=true
FROM openjdk:8-jre-alpine
WORKDIR /tmp
COPY --from=build /app/target/h5-0.0.1-SNAPSHOT.jar /tmp/h5.jar
EXPOSE 7786
ENTRYPOINT ["java","-jar","-Xms64m","-Xmx128m","h5.jar"]
同样是两阶段构建
运行脚本
docker build -t xx .
docker run -p 34712:7786 -d --name xx xx
扩展点
- 可以加上 harbor 作为镜像仓库周转
- 构建镜像本身编译会占用系统资源,应该单独放到一台服务器上,但目前服务器资源有限,就采用了这种 轻度jenkins(使用dokcer作为编译环境后大大降低了配置 jenkins 基础环境的成本 ,jenkins 中只用执行docker脚本即可)+docker部署的方式