docker--打包应用

目录

[Docker Dockerfile](#Docker Dockerfile)

SpringBoot应用构建

Dockerfile:

编译:

Vue前端项目打包

编译打包

nginx的配置文件default.conf

dockerfile

构建镜像

运行

Docker Dockerfile

Dockerfile 是一个用来构建镜像的文件,内容包含了一 条条构建镜像所需的指令和说明。

bash 复制代码
FROM nginx

RUN echo '这是一个本地构建的nginx镜像' >

/usr/share/nginx/html/index.html

FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN:用于执行后面跟着的命令行命令。有以下俩种格式:

shell 格式:RUN <命令行命令>

<命令行命令>等同于,在终端操作的 shell 命 令。

exec 格式:RUN ["可执行文件", "参数1", "参数2"]

例如:

RUN ["./test.php", "dev", "offline"]

等价于 RUN ./test.php dev offline

注意:Dockerfile 的指令每执行一次都会在 docker 上新 建一层。所以过多无意义的层,会造成镜像膨胀过大。 例如:

FROM ubuntu

run apt-get update || apt-get update #两次

重复apt-get update 防止更新失败

run apt-get install iputils-ping

run ping www.baidu.com

以上执行会创建 3 层镜像。可简化为以下格式:

FROM ubuntu run

apt-get update || apt-get update \

&& apt-get install iputils-ping \

&& ping www.baidu.com

SpringBoot应用构建

将SpringBoot jar包与Dockerfile放在一起构建。

Dockerfile:

bash 复制代码
FROM openjdk:11
VOLUME /tmp
expose 3000  #expose 暴露端口号
COPY *.jar /opt/app.jar
ENTRYPOINT ["java","-jar","/opt/app.jar"]

编译:

bash 复制代码
docker build -t app .

-t app 指编译后的镜像文件

批量编译:build.bat文件

bash 复制代码
docker build -t erp:1.0 -f ./Dockerfile ../by-main/target
docker images
@pause

Vue前端项目打包

编译打包

bash 复制代码
pnpm build # npm run build

nginx的配置文件default.conf

bash 复制代码
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /api/ {
add_header 'Access-ControlAllow-Origin' '*';
add_header 'Access-ControlAllow-Methods' 'POST,GET,OPTIONS';
add_header 'Access-ControlAllow-Headers' 'Authorization'; #跨域设置
proxy_pass
http://123.57.206.19:8085;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

dockerfile

bash 复制代码
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
COPY dist/ /usr/share/nginx/html/

构建镜像

bash 复制代码
docker build -t web:v1 .

运行

bash 复制代码
docker run -it -p 8086:80 web:v1
相关推荐
终端行者8 分钟前
Jenkins Pipeline 企业级用法 参数化构建+Ansible发布---上
docker·ansible·jenkins·cicd
JAVA面经实录91716 分钟前
Java多线程并发高频面试100题(完整版·含答案·背诵版)
java·开发语言·面试
XiYang-DING19 分钟前
【Java EE】TCP—流量控制和拥塞控制
java·tcp/ip·java-ee
BIG_PEI39 分钟前
检查并安装Redis
java
大貔貅喝啤酒41 分钟前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
奋斗的小方43 分钟前
Java基础篇09:项目实战
java·开发语言
海兰43 分钟前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
vKd0Ff21L1 小时前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
武子康1 小时前
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
java·大数据·分布式·消息队列·rabbitmq·rocketmq·java-rocketmq
北风toto1 小时前
为什么 IntelliJ IDEA Community 无法开发 Vue?——附解决方案
java·vue.js·intellij-idea