Skip to content
文章摘要

前后端 Dockerfile 示例

Java 应用

在项目根目录创建 Dockerfile 文件,并填充以下内容。

Dockerfile
# 以此镜像为基础镜像
FROM java:8-jdk-alpine

ENV NACOS_ENV prod

# 设置工作目录
WORKDIR /app

# 复制JAR包到工作目录
COPY customer-web/target/paas.jar /app/paas.jar
COPY userWeb/user-web/target/user-web.jar /app/user-web.jar
COPY operate/operate-admin/target/admin.jar /app/admin.jar
COPY deploy/start.sh /app/start.sh

# 配置加速镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 下载缺少的镜像
RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig

# 分配文件夹权限
RUN chmod +x /app/start.sh

# 配置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
# 暴露端口
EXPOSE 10050 10090 10030

ENTRYPOINT ["sh", "/app/start.sh", "$NACOS_ENV"]

同在根目录下创建 deploy/start.sh 启动脚本

bash
#!/bin/sh
# 启动下列 jar 包
nohup java -jar /app/paas.jar --spring.profiles.active=$1 > paas.log 2>&1 &
nohup java -jar /app/user-web.jar --spring.profiles.active=$1 > user-web.log 2>&1 &
nohup java -jar /app/admin.jar --spring.profiles.active=$1 > admin.log 2>&1 &

# 让容器保持启动
while [[ true ]]; do
    sleep 1
done

前端 应用

在项目根目录创建 Dockerfile 文件,并填充以下内容。

Dockerfile
# 以此镜像为基础镜像
FROM nginx:stable-alpine

ENV nginx
# 设置工作目录
WORKDIR /usr/share/nginx/html
# 复制前端文件夹到工作目录
COPY dist .
# 复制nginx配置文件
COPY deploy/default.conf /etc/nginx/conf.d/default.conf

EXPOSE 80 443

同在根目录下创建 deploy/default.conf 配置文件

nginx
server{
 listen 80;
 rewrite  ^(.*)$  https://$host$1  permanent;
}

server{
 listen 443 ssl http2;
 server_name frontend;
 # 域名配置
 ssl_certificate      cert/danmi.com.crt;
 ssl_certificate_key  cert/danmi.com.key;
 ssl_session_cache    shared:SSL:10m;
 ssl_session_timeout  5m;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 ssl_prefer_server_ciphers  on;
 root /usr/share/nginx/html; # 替换至前端部署目录

 location / {
  try_files $uri $uri/ /index.html;
 }

 # 反向代理至用户中心API
 location ^~ /api/{
  proxy_pass http://api:9110/; # 替换至服务URL
  proxy_set_header   Host $host;
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header   X-Forwarded-Host $server_name;
 }
}

评论
-