前言
本文通过Dockerfile实现vue、java编译构建镜像。
Dockerfile示例
Vue
# 编译
FROM node14:1.0.0 as build-stage
WORKDIR /src/code
COPY ./vue-ui/ /src/code
RUN pwd && ls -al \
&& nrm add repo https://registry.npmmirror.com/ && nrm use repo && nrm ls \
&& npm install && npm run build:prod \
&& ls -al
# 构建镜像
FROM nginx:1.22-vts
ENV BASE_URL='/'
#将编译生成的dist目录复制到容器的/usr/share/nginx/html目录
COPY --from=build-stage /src/code/dist /usr/share/nginx/html
COPY --from=build-stage /src/code/docker-entrypoint.sh /docker-entrypoint.d/docker-entrypoint.sh
RUN ["chmod", "+x", "/docker-entrypoint.d/docker-entrypoint.sh"]
#声明运行时容器暴露的端口(容器提供的服务端口)
EXPOSE 8080
#CMD:指定容器启动时要运行的命令
CMD ["nginx", "-g", "daemon off;"]
Java
# 编译
FROM jdk8-maven386-devops:1.0.0.6 as build-stage
WORKDIR /src/code
COPY ./ /src/code
RUN pwd && ls -al \
&& mvn clean package -Dmaven.test.failure.ignore=true -s proxy-settings.xml -f pom.xml \
&& ls -al
# 构建镜像
FROM jdk8:1.0.0
#将编译生成的jar包和配置文件复制到容器的/app/目录
COPY --from=build-stage /src/code/app.jar /src/code/bootstrap.yml /app/
ENV JAVA_OPTS="-Dfile.encoding=utf-8 -Dfile.encoding=utf-8 -Xms1024m -Xmx1024m -jar"
EXPOSE 9209
ENTRYPOINT java ${JAVA_OPTS} /app/app.jar --spring.config.location=/app/bootstrap.yml