04-Dockerfile示例

简介: 本文介绍了三个模块的Docker镜像构建方式:app-web模块打包为war,基于Tomcat镜像;system-server模块为SpringBoot jar包,使用OpenJDK镜像;vue项目则通过Nginx或旧版httpd镜像部署,实现前端静态文件服务。

app-web模块

maven编译后,会将app-web模块打包成war包,可以使用tomcat作为基础镜像进行制作。

Dockerfile示例:

FROM tomcat:9.0.90-jre8
LABEL maintainer="lalala"
# 设置时区为东八区时间
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" >/etc/timezone
# 复制编译的war包到tomcat的webapps目录
COPY target/myproject.war /usr/local/tomcat/webapps/myproject.war
WORKDIR /usr/local/tomcat
# 暴露tomcat的8080端口
EXPOSE 8080
# 启动tomcat
ENV JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"
ENTRYPOINT ["catalina.sh", "run"]


system-server模块

maven编译后,会将system-server模块打包成jar包(SpringBoot项目),可以使用openjdk作为基础镜像进行制作。

Dockerfile示例:

FROM openjdk:8u312-bullseye
LABEL maintainer="lalala"
# 设置时区为东八区时间
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" >/etc/timezone
# 复制编译的jar包到容器的/usr/src目录
COPY target/system-server-1.0.jar /usr/src/system-server/system-server.jar
WORKDIR /usr/src/system-server
# 设置使用dev环境配置、使用8093端口
ENV JAVA_PARAMS=" -Djava.security.egd=file:/dev/./urandom --server.port=8093 --spring.profiles.active=dev"
# 暴露8093端口
EXPOSE 8093
# 带着配置项运行jar包
ENTRYPOINT ["java", "-jar" ,"/usr/src/system-server/system-server.jar"]
CMD ["$JAVA_PARAMS"]


vue项目

Nginx基础镜像打包

使用Nginx作为基础镜像。

FROM nginx:1.27.0
LABEL maintainer="lalala"
# 设置时区为上海东八区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" >/etc/timezone
# nginx 将编译生成的dist下的文件复制到容器/usr/share/nginx/html中
COPY dist/ /usr/share/nginx/html/myproject-vue/
# 复制nginx配置文件到容器/etc/
COPY nginx.conf /etc/nginx/nginx.conf
# 暴露80端口
EXPOSE 80

nginx配置:

worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    underscores_in_headers on;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
    
    server {
        listen   80 default_server;
        location /xxx/xxx {
            proxy_pass http://service-xxx:8093/xxx/xxx;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_hide_header X-Frame-Options;
            add_header X-Frame-Options ALLOWALL;
        }
        location /xxx {
            proxy_pass http://service-xxx:8080/xxx;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_hide_header X-Frame-Options;
            add_header X-Frame-Options ALLOWALL;
        }
        
        location /xxxxxxxx {
            root /usr/share/nginx/html/;
        }
    }
}


旧的httpd作为基础镜像打包

F5只映射了一个地址,所以需要前端部署为Nginx。目前已不再使用httpd打包。

Node会将vue项目打包编译成镜像页面,可以使用httpd作为基础镜像进行制作。

Dockerfile示例:

FROM httpd:2.4.61
LABEL maintainer="lalala"
# 设置时区为上海东八区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" >/etc/timezone
# 将编译生成的dist下的文件复制到容器/usr/local/apache2/htdocs中
COPY dist/ /usr/local/apache2/htdocs/myproject-vue/
# 暴露httpd的80端口
EXPOSE 80
目录
相关文章
|
9天前
|
存储 人工智能 数据库
Agentic Memory 实践:用 agents.md 实现 LLM 持续学习
利用 agents.md 文件实现LLM持续学习,让AI Agent记住你的编程习惯、偏好和常用信息,避免重复指令,显著提升效率。每次交互后自动归纳经验,减少冷启动成本,跨工具通用,是高效工程师的必备技能。
106 17
Agentic Memory 实践:用 agents.md 实现 LLM 持续学习
|
2天前
|
自然语言处理 算法 测试技术
大模型应用:基于本地大模型的中文命名实体识别技术实践与应用
本文探讨了基于本地部署的大模型在命名实体识别(NER)任务中的应用优势。通过通用领域中文NER和医疗领域专用NER两个典型案例,展示了本地大模型在数据安全、响应速度和识别精度方面的显著优势。通用领域采用RoBERTa模型在CLUENER2020数据集上微调,可识别10类实体;医疗领域基于BERT架构的专用模型,在CMEEE数据集上训练,准确识别疾病、症状等医疗实体。本地部署不仅满足合规要求,还能通过领域自适应提升专业文本识别效果,为各行业智能化转型提供可靠技术方案。
56 14
|
9天前
|
人工智能 机器人 程序员
去年我用一张Excel表"规划"学习,结果把自己逼进了ICU——直到我学会让AI帮我排兵布阵
本文以作者因"完美计划表"累倒入院的亲身经历切入,分享了一套让AI担任私人学习规划师的完整指令模板。通过"目标拆解""遗忘曲线复习""弹性时间"三大机制,解决目标模糊、复习逃避、计划崩溃等常见学习痛点,并提供上班族、学生、转行者三种典型场景的实战案例。
182 18
|
1月前
|
Java Maven 数据安全/隐私保护
06-nexus私仓环境搭建
本文详细介绍Nexus Repository Manager OSS的安装与配置,涵盖JDK环境准备、服务部署、用户创建及启动操作。指导用户搭建Maven和Docker私有仓库,实现jar包与镜像的上传下载,并配置匿名访问与本地客户端信任。支持多种仓库类型,适用于企业级制品管理。
154 0
|
1月前
|
关系型数据库 MySQL Docker
03-Docker下载加速 docker下载加速
本文介绍了两种Docker镜像下载加速方法:一是使用网易数帆、阿里云等镜像仓库直接拉取镜像,如通过`hub.c.163.com/library/mysql`下载MySQL;二是配置阿里云镜像加速器,修改`/etc/docker/daemon.json`文件添加加速地址,重启Docker服务后即可使用官方镜像命令快速拉取。此外,还介绍了如何为Docker配置HTTP/HTTPS代理,提升网络访问效率。
212 0
|
1月前
|
缓存 Ubuntu Linux
02-Docker安装 CentOS安装Docker
本文详细介绍在CentOS和Ubuntu系统上安装、配置及卸载Docker的完整步骤,包括配置阿里云镜像加速、离线安装方法、设置开机自启与命令补全,助你快速部署并测试Docker环境。
160 0
|
1月前
|
Java Maven 数据安全/隐私保护
Nexus仓库
本文介绍了Nexus Repository Manager的Linux安装与配置,包括JDK环境搭建、OSS版下载、解压启动、仓库管理及Docker部署方式。详细说明了登录、密码重置、仓库创建、Maven/NPM/Docker私服配置与资源上传等操作,并提供常用命令与配置示例,助力高效搭建私有仓库。
170 0
|
域名解析 弹性计算 Linux
PHP SDK 的安装与调用
Alibaba Cloud SDK for PHP是支持PHP开发者快速访问阿里云服务的开发包,由Alibaba Cloud Client for PHP提供底层支持。Alibaba Cloud SDK for PHP让您不用复杂编程即可访问云服务器、云数据库RDS和云监控等多个阿里云服务。本文将为大家介绍PHP SDK的安装与调用过程。
2624 0
PHP SDK 的安装与调用
|
开发工具
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
4743 9
|
开发者
2024 乘风者计划全新启航!快来加入吧!
 2021年,阿里云开发者社区焕新升级,重磅推出“乘风者计划”!诚邀四海技术博主入驻社区,泼墨云间,书写天地。入驻社区,即可享丰厚权益! 新的一年,乘风者计划重磅升级!
251886 81

热门文章

最新文章