diff --git a/docker/backend/Dockerfile b/docker/backend/Dockerfile new file mode 100644 index 0000000..730cf53 --- /dev/null +++ b/docker/backend/Dockerfile @@ -0,0 +1,19 @@ +FROM openjdk:8u272-jdk as builder +WORKDIR /application +ARG JAR_FILE=tcmonline-admin.jar +COPY ${JAR_FILE} application.jar +RUN java -Djarmode=layertools -jar application.jar extract + +FROM openjdk:8u272-jdk +WORKDIR /application +COPY --from=builder application/dependencies/ ./ +COPY --from=builder application/snapshot-dependencies/ ./ +COPY --from=builder application/spring-boot-loader/ ./ +COPY --from=builder application/application/ ./ +COPY docker-entrypoint.sh ./ +RUN chmod +x docker-entrypoint.sh + +# 安装Redis +RUN apt-get update && apt-get install -y redis-server + +ENTRYPOINT ["./docker-entrypoint.sh"] diff --git a/docker/backend/docker-entrypoint.sh b/docker/backend/docker-entrypoint.sh new file mode 100755 index 0000000..4488215 --- /dev/null +++ b/docker/backend/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +redis-server & +java $JAVA_OPTS -server \ +-XX:+UnlockExperimentalVMOptions \ +-XX:+UseCGroupMemoryLimitForHeap \ +-XX:-OmitStackTraceInFastThrow \ +-Djava.security.egd=file:/dev/./urandom \ +org.springframework.boot.loader.JarLauncher diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000..074bd97 --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,40 @@ +version: "3.6" + +services: + backend: + build: + context: ./backend + dockerfile: Dockerfile + container_name: tcmonline-backend + restart: always + ports: + - "8181:8080" + volumes: + - "tcm-upload:/home/tcmonline/uploadPath" # 持久化上传的文件 + environment: + - "JAVA_OPTS=-Duser.language=zh -XX:+UseG1GC" + - "TZ=Asia/Shanghai" + # - "spring.datasource.url=jdbc:mysql://mysql:3306/tduck?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&tinyInt1isBit=false" #数据库连接地址 + # - "spring.datasource.username=root" + # - "spring.datasource.password=root" + - "snyu.profile=/home/tcmonline/uploadPath" + + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + container_name: tcmonline-frontend + ports: + - "8080:80" + restart: always + volumes: + - ./frontend/conf/nginx.conf:/etc/nginx/nginx.conf + - ./frontend/conf/conf.d:/etc/nginx/conf.d + - ./frontend/dist:/var/www/html + links: + - backend:api + depends_on: + - backend + +volumes: + tcm-upload: diff --git a/docker/frontend/Dockerfile b/docker/frontend/Dockerfile new file mode 100644 index 0000000..70cd0d1 --- /dev/null +++ b/docker/frontend/Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:1.12 +LABEL maintainer="tcmonline" + +# set timezome +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ No newline at end of file diff --git a/docker/frontend/conf/conf.d/default.conf b/docker/frontend/conf/conf.d/default.conf new file mode 100644 index 0000000..75daeb7 --- /dev/null +++ b/docker/frontend/conf/conf.d/default.conf @@ -0,0 +1,19 @@ +server { + listen 80 ; + server_name localhost ; + + root /var/www/html ; + index index.html index.htm ; + + #charset koi8-r; + #access_log /var/log/nginx/host.access.log main; + + location / { + try_files $uri $uri/ /index.html ; + } + + error_page 500 502 503 504 /50x.html ; + location = /50x.html { + root /usr/share/nginx/html ; + } +} diff --git a/docker/frontend/conf/nginx.conf b/docker/frontend/conf/nginx.conf new file mode 100644 index 0000000..e4bad8d --- /dev/null +++ b/docker/frontend/conf/nginx.conf @@ -0,0 +1,32 @@ + +user nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + 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; +} diff --git a/docker/frontend/dist/favicon.ico b/docker/frontend/dist/favicon.ico new file mode 100644 index 0000000..e263760 Binary files /dev/null and b/docker/frontend/dist/favicon.ico differ diff --git a/docker/frontend/dist/html/ie.html b/docker/frontend/dist/html/ie.html new file mode 100644 index 0000000..390ce8a --- /dev/null +++ b/docker/frontend/dist/html/ie.html @@ -0,0 +1,46 @@ + + + +
+ +您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。
+自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明 。
+推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。
+ +1&&i>0?s:a}};return o;function a(){return e =2){if(i){var o=Wg(r,i,n,e.smoothConstraint);t.moveTo(r[0][0],r[0][1]);for(var a=r.length,s=0;s<(n?a:a-1);s++){var l=o[2*s],u=o[2*s+1],c=r[(s+1)%a];t.bezierCurveTo(l[0],l[1],u[0],u[1],c[0],c[1])}}else{t.moveTo(r[0][0],r[0][1]);s=1;for(var h=r.length;sg[1]&&(g[1]=f)}return this._rawCount=this._count=s,{start:a,end:s}},t.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,r=this._chunks,o=this._dimensions,a=o.length,s=this._rawExtent,l=Object(y["map"])(o,(function(t){return t.property})),u=0;uv[1]&&(v[1]=g)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&ec[1]&&(c[1]=y),h[d++]=v}return r._count=d,r._indices=h,r._updateGetRawIdx(),r},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,r=0,o=this.count();r0&&t.arc(c+U.cx,h+U.cy,Y,Cg(U.y0,U.x0),Cg(U.y1,U.x1),!d),t.arc(c,h,i,Cg(U.cy+U.y1,U.cx+U.x1),Cg(Z.cy+Z.y1,Z.cx+Z.x1),!d),X>0&&t.arc(c+Z.cx,h+Z.cy,X,Cg(Z.y1,Z.x1),Cg(Z.y0,Z.x0),!d))}else t.moveTo(c+k,h+L),t.arc(c,h,i,l,u,!d);else t.moveTo(c+k,h+L);if(r>Pg&&N)if(I>Pg){Y=Lg(g,I),X=Lg(y,I),U=Ng(P,j,T,C,r,-X,d),Z=Ng(k,L,A,D,r,-Y,d);t.lineTo(c+U.cx+U.x0,h+U.cy+U.y0),I