跳至主要內容

技术中心大约 2 分钟

服务端

Docker基础Java容器:

基础镜像说明(Since 0.4):

  1. 基础镜像中定义的工作目录为/opt/app
  2. 基础镜像中自带app.jar位于/opt/app/app.jar,输出Hello World!。使用时覆盖该文件即可。
  3. 基础镜像中已自带jar程序启动命令,如不满足需求,可自定义。

Dockerfile 示例文件

FROM docker.clzytech.com:1024/openjdk8
# 定义项目工作目录,基础镜像中已定义
# WORKDIR /opt/app
# 添加项目可运行jar包
ADD target/site-starter-1.0.0-SNAPSHOT.jar app.jar
# 拷贝项目配置文件
ADD src/main/resources/application.yml config/application.yml
# 开放端口
EXPOSE 8080

# 定义可外挂配置文件夹和数据文件夹
VOLUME ["/opt/app/config", "/opt/app/datadir", "/opt/app/logs"]

# 容器启动执行脚本,基础镜像中已定义
# ENTRYPOINT ["java", "-jar", "-agentlib:agent", "${JAVA_OPTS}", "/opt/app/app.jar"]

启动服务(适用于linux服务器)

docker run -d --name demo-test --restart=always -p 8080:8080 \ 
-v /home/demo-test/datadir:/usr/local/demo-test/datadir \ 
-v /sbin/dmidecode:/sbin/dmidecode -v /dev/mem:/dev/mem --privileged \ 
docker.clzytech.com:1024/demo-test

注意:在正式环境部署的情况下,必须配置-v /sbin/dmidecode:/sbin/dmidecode -v /dev/mem:/dev/mem --privileged参数,否则应用程序授权无效,无法正常使用应用程序。

前端

Docker基础Java容器:

基础镜像说明:

  1. 基础镜像中网页工作目录为/usr/share/nginx/html
  2. 基础镜像中nginx配置目录/etc/nginx/conf.d/

由于前后分离部署,需要对后端服务的接口进行反向代理,所有需要配置以下nginx.tpl的文件。如果有其他特殊的需求也请修改该模板文件。

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen       ${NGINX_PORT};
  server_name  localhost;
  large_client_header_buffers 4 16k;
  client_max_body_size 300m;
  client_body_buffer_size 128k;
  proxy_connect_timeout 600;
  proxy_read_timeout 600;
  proxy_send_timeout 600;
  proxy_buffer_size 64k;
  proxy_buffers   4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;

  location / {
    index index.html;
    try_files $uri $uri/ /index.html;
    root /usr/share/nginx/html;
  }

  location /api/ {
    client_max_body_size 1G;
    proxy_pass ${VUE_APP_API_PROXY_URL}/api/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /ws {
    client_max_body_size 1G;
    proxy_pass ${VUE_APP_API_PROXY_URL}/ws;
    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 Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
  }

}

然后进行Docker打包:

FROM nginx

ADD ./dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/nginx.conf.tpl
COPY 40-webconfset.sh /docker-entrypoint.d/
COPY .env* /etc/nginx/envs/
RUN chmod +x /docker-entrypoint.d/40-webconfset.sh
## 解决时区的问题
ENV TZ=Asia/Shanghai

## 解决中文乱码
ENV LC_ALL en_US.UTF-8
ENV ACTIVE_PROFILE=docker
ENV NGINX_PORT=80
ENV WEB_OPTS='{}'

EXPOSE 80

启动服务

docker run -d --name demo-test-web --restart=always -p 80:80 docker.clzytech.com:1024/demo-test-web