一、后端Java项目
bash
# 使用jar包制作镜像
# 使用的基础镜像
FROM adoptopenjdk/maven-openjdk8
# 设置时区
RUN rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# 指定工作目录
WORKDIR /app
# 将jar包拷贝
COPY target/*.jar app.jar
# 定义环境变量设置默认值
ENV ACTIVE_PROFILE prod
# 定义服务端口
ENV SERVICE_PORT 9008
# 容器启动后运行的命令 使用 sh -c 让 shell 来解释环境变量。这种方式能够保证 $ACTIVE_PROFILE 在 CMD 执行时被正确替换。
CMD ["sh", "-c", "java -jar /app/app.jar --spring.profiles.active=$ACTIVE_PROFILE --server.port=$SERVICE_PORT"
二、前端Vue项目
bash
# 使用 Nginx 作为基础镜像
FROM nginx
ENV TimeZone=Asia/Shanghai
# 将本地的 Vue.js 项目打包拷贝到 Nginx 的默认静态文件目录
COPY dist/ /usr/share/nginx/html/
# 复制 Nginx 配置文件到容器中
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 暴露 Nginx 默认的 HTTP 端口
EXPOSE 1908
搭配nginx.conf使用
bash
server {
listen 1908;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:9008/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}