From 2ba159752fc234dc46732df4ae97489097aa619d Mon Sep 17 00:00:00 2001 From: SQ <59799517@qq。com> Date: Thu, 18 Jan 2024 16:55:25 +0800 Subject: [PATCH] =?UTF-8?q?daockerFile=E6=9C=89=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E8=BF=98=E6=98=AF=E7=94=A8=E4=BB=A5=E5=89=8D=E7=9A=84=E5=90=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 48 ++-------------- Dockerfile-java | 25 -------- Dockerfile-tomcat | 14 ----- Dockerfile_abc | 50 ---------------- Dockerfile_dddd | 57 +++++++++++++++++++ docker-run.sh | 8 +-- .../controller/FreemarkerController.java | 52 ++++++++--------- 7 files changed, 93 insertions(+), 161 deletions(-) delete mode 100644 Dockerfile-java delete mode 100644 Dockerfile-tomcat delete mode 100644 Dockerfile_abc create mode 100644 Dockerfile_dddd diff --git a/Dockerfile b/Dockerfile index 6a5b464..965f5e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,61 +1,25 @@ -#编译jar包 FROM maven:3.9.4-eclipse-temurin-17-alpine AS builder - MAINTAINER SQ WORKDIR /build/ - -#复制源码信息 COPY pom.xml /build/ COPY src /build/src/ COPY src/main/resources/sqlite/sqmusic.db /cache/sqmusic.db -#打包 RUN mvn clean package +From eclipse-temurin:17-jre-alpine -#运行镜像 -FROM centos:7 - -# 时区与字符设置UTF-8并配置环境 -ENV TZ=Asia/Shanghai -ENV LANG=C.UTF-8 -ENV apiPort="8099" -ENV webPort="80" -ENV TimeZone=Asia/Shanghai - - -# -#RUN yum makecache -RUN yum update -y wget - -RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm -RUN yum install -y nginx - -RUN yum install -y wget -RUN wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm -RUN yum install -y ./jdk-17_linux-x64_bin.rpm - -#RUN wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm -#RUN yum install -y ./nginx-1.18.0-1.el7.ngx.x86_64.rpm - - +WORKDIR /app COPY --from=builder /build/target/MusicServer2.0.jar /app/app.jar -RUN mkdir -p /usr/local/nginx/conf/ -RUN echo "worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen ${webPort}; server_name localhost; location / { root html; index index.html index.htm; } location /sqmusic-api/ { proxy_pass http://localhost:${apiPort}/; proxy_http_version 1.1; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}" > /usr/local/nginx/conf/nginx.conf +EXPOSE 8099 -#将启动脚本拷贝到容器里面的/usr/local/project下面 -COPY docker-run.sh /usr/local/project/docker-run.sh -#给run.sh可执行权限 -RUN chmod 777 /usr/local/project/docker-run.sh +VOLUME ["/music"] -#对外暴露80,8880端口,暴不暴露端口没有什么影响,重要的是要在启动的时候使用-p映射宿主机端口:容器端口,暴露端口你也得使用-p映射端口 -EXPOSE ${apiPort} ${webPort} +VOLUME ["/cache"] -#nginx -c -t /software/nginx/nginx.conf +CMD ["java", "-jar", "app.jar"] -#通过脚本同时启动后端jar包和nginx -CMD ["sh","/usr/local/project/docker-run.sh","${apiPort}","${webPort}"] diff --git a/Dockerfile-java b/Dockerfile-java deleted file mode 100644 index 965f5e5..0000000 --- a/Dockerfile-java +++ /dev/null @@ -1,25 +0,0 @@ -FROM maven:3.9.4-eclipse-temurin-17-alpine AS builder -MAINTAINER SQ - -WORKDIR /build/ - -COPY pom.xml /build/ -COPY src /build/src/ -COPY src/main/resources/sqlite/sqmusic.db /cache/sqmusic.db - -RUN mvn clean package - -From eclipse-temurin:17-jre-alpine - -WORKDIR /app - -COPY --from=builder /build/target/MusicServer2.0.jar /app/app.jar - -EXPOSE 8099 - -VOLUME ["/music"] - -VOLUME ["/cache"] - -CMD ["java", "-jar", "app.jar"] - diff --git a/Dockerfile-tomcat b/Dockerfile-tomcat deleted file mode 100644 index 0c0c69d..0000000 --- a/Dockerfile-tomcat +++ /dev/null @@ -1,14 +0,0 @@ -FROM tomcat:8.5.87-jre17-temurin-focal -#接口地址 -EXPOSE 8080 -MAINTAINER 59799517@qq.com - -COPY ./web /usr/local/tomcat/webapps/ROOT -COPY ./sw.war /usr/local/tomcat/webapps/sw.war -COPY ./*.db /cache/sqmusic/config -#缓存地址 -VOLUME ["/cache/sqmusic/config/cache"] -#日志地址 -VOLUME ["/cache/sqmusic/config/logs"] - -ENTRYPOINT ["catalina.sh", "run"] diff --git a/Dockerfile_abc b/Dockerfile_abc deleted file mode 100644 index e6abab1..0000000 --- a/Dockerfile_abc +++ /dev/null @@ -1,50 +0,0 @@ -FROM alpine:3.17.2 -CMD ["/bin/sh"] -EXPOSE 8083 -MAINTAINER 59799517@qq.com -# 创建工作目录 -WORKDIR /root -# 修改软件包源地址(此处使用 清华大学的源地址) -RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories -# 更新软件包 -RUN apk update upgrade -RUN apk add --no-cache ca-certificates tzdata tree curl tini -# 安装 glibc 库,主要为了解决中文乱码, 但是有部分java工程可能会依赖. 比如: aws kinesis 等 -COPY locale.md locale.md -COPY glibc-2.35-r0.apk glibc-2.35-r0.apk -COPY glibc-bin-2.35-r0.apk glibc-bin-2.35-r0.apk -COPY glibc-i18n-2.35-r0.apk glibc-i18n-2.35-r0.apk -COPY sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub -RUN apk add glibc-2.35-r0.apk glibc-bin-2.35-r0.apk glibc-i18n-2.35-r0.apk -RUN cat locale.md | xargs -i /usr/glibc-compat/bin/localedef -i {} -f UTF-8 {}.UTF-8 && \ -rm -rf *.apk && \ -rm -rf /var/cache/apk/* && \ -rm -rf locale.md -# tzdata 是可以配置时区,这里默认使用上海时区 -RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone -RUN { echo '#!/bin/sh'; echo 'set -e'; echo; echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; } > /usr/local/bin/docker-java-home -RUN chmod +x /usr/local/bin/docker-java-home -# 支持使用中文 -ENV LANG=zh_CN.UTF-8 -ENV LANGUAGE=zh_CN.UTF-8 - - -# 以下为安装jdk 17 的命令 , 目前alpine:3.15 里面软件包最新版本 jdk版本 11.0.15 -ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk -ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-11-openjdk/jre/bin:/usr/lib/java-11-openjdk/bin -RUN apk add --no-cache openjdk17 && [ "$JAVA_HOME" = "$(docker-java-home)" ] - - -# 以下为安装jdk 1.8 的命令 , 目前alpine:3.15 里面软件包最新版本 jdk版本 1.8.0_322 -# ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk -# ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin -# RUN apk add --no-cache openjdk8 && [ "$JAVA_HOME" = "$(docker-java-home)" ] - - - -ARG JAR_FILE -VOLUME ["/music"] -VOLUME ["/config"] -ADD ./simple-MusicServer2.0.jar /app.jar - -ENTRYPOINT ["java", "-jar","/app.jar"] diff --git a/Dockerfile_dddd b/Dockerfile_dddd new file mode 100644 index 0000000..7696238 --- /dev/null +++ b/Dockerfile_dddd @@ -0,0 +1,57 @@ +#编译jar包 +FROM maven:3.9.4-eclipse-temurin-17-alpine AS builder + +MAINTAINER SQ + +WORKDIR /build/ + + +#复制源码信息 +COPY pom.xml /build/ +COPY src /build/src/ +COPY src/main/resources/sqlite/sqmusic.db /cache/sqmusic.db + +#打包 +RUN mvn clean package + + +#运行镜像 +FROM centos:7 + +# 时区与字符设置UTF-8并配置环境 +ENV TZ=Asia/Shanghai +ENV LANG=C.UTF-8 +ENV TimeZone=Asia/Shanghai + + +# +#RUN yum makecache +RUN yum update -y wget + +RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm +RUN yum install -y nginx + +RUN yum install -y wget +RUN wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm +RUN yum install -y ./jdk-17_linux-x64_bin.rpm + +#RUN wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm +#RUN yum install -y ./nginx-1.18.0-1.el7.ngx.x86_64.rpm + +COPY src/main/resources/static /html/ +RUN rm /etc/nginx/nginx.conf +COPY --from=builder /build/target/MusicServer2.0.jar /app/app.jar +RUN echo "worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /html; index index.html index.htm; } location /sqmusic-api/ { proxy_pass http://localhost:8099/; proxy_http_version 1.1; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}" > /etc/nginx/nginx.conf + +#将启动脚本拷贝到容器里面的/usr/local/project下面 +COPY docker-run.sh /usr/local/project/docker-run.sh +#给run.sh可执行权限 +RUN chmod 777 /usr/local/project/docker-run.sh + +#对外暴露80,8880端口,暴不暴露端口没有什么影响,重要的是要在启动的时候使用-p映射宿主机端口:容器端口,暴露端口你也得使用-p映射端口 +#EXPOSE ${apiPort} ${webPort} + +#nginx -c -t /software/nginx/nginx.conf + +#通过脚本同时启动后端jar包和nginx +CMD ["sh","/usr/local/project/docker-run.sh","8099","80"] diff --git a/docker-run.sh b/docker-run.sh index 3320655..3c737ba 100644 --- a/docker-run.sh +++ b/docker-run.sh @@ -1,14 +1,14 @@ #!/bin/bash -echo "java-端口:$0"; -echo "web-端口:$1"; +echo "java-端口:$1"; +echo "web-端口:$2"; # 启动nginx服务 -nginx -c /usr/local/nginx/conf/nginx.conf +nginx -c /etc/nginx/nginx.conf #启动后端jar包,日志打印不额外存储 -nohup java -Dserver.port=$0 -jar /app/app.jar >/dev/null 2>& 1 & +nohup java -Dserver.port=$1 -jar /app/app.jar >/dev/null 2>& 1 & #使这个脚本一直处于运行状态,如果不这样,当这个脚本命令执行结束后,docker容器会立即停止运行,所以这里需要让这个脚本一直运行,使docker容器一直处于运行状态 while [[ true ]];do diff --git a/src/main/java/com/sqmusicplus/controller/FreemarkerController.java b/src/main/java/com/sqmusicplus/controller/FreemarkerController.java index 0332f9c..3105798 100644 --- a/src/main/java/com/sqmusicplus/controller/FreemarkerController.java +++ b/src/main/java/com/sqmusicplus/controller/FreemarkerController.java @@ -1,29 +1,29 @@ -//package com.sqmusicplus.controller; +package com.sqmusicplus.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @Classname FreemarkerController + * @Description TODO + * @Version 1.0.0 + * @Date 2023/9/21 18:29 + * @Created by Administrator + */ +@Slf4j +@Controller +@RequestMapping +public class FreemarkerController { + + @RequestMapping(value = {"/","/index"}) + public String search(){ + return "redirect:/index.html"; + } +// @RequestMapping(value = {"/login"}) +// public String login(){ // -//import cn.dev33.satoken.annotation.SaCheckLogin; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.stereotype.Controller; -//import org.springframework.web.bind.annotation.RequestMapping; -// -///** -// * @Classname FreemarkerController -// * @Description TODO -// * @Version 1.0.0 -// * @Date 2023/9/21 18:29 -// * @Created by Administrator -// */ -//@Slf4j -//@Controller -//@RequestMapping -//public class FreemarkerController { -// -// @RequestMapping(value = {"/","/index"}) -// public String search(){ // return "redirect:/index.html"; // } -//// @RequestMapping(value = {"/login"}) -//// public String login(){ -//// -//// return "redirect:/index.html"; -//// } -//} +}