From f3c6f1e70bb740cc11b29e9ade198ba333e76273 Mon Sep 17 00:00:00 2001 From: fafa_junhe <842355358@qq.com> Date: Wed, 19 Jun 2024 19:23:01 +0800 Subject: [PATCH] docker --- .gitignore | 3 +- app-dm/.dockerignore | 3 + app-dm/Dockerfile | 14 ++ app-dm/package.json | 2 +- build.sh | 3 + docker-compose.yml | 47 +++++++ docker/base-dm/Dockerfile | 35 +++++ docker/build-dmpython/Dockerfile | 7 + docker/build-dmpython/auto_install.xml | 122 ++++++++++++++++++ .../.dockerignore | 0 .../.editorconfig | 0 .../.gitignore | 0 .../Dockerfile | 0 .../Jenkinsfile | 0 .../LICENSE | 0 .../README.md | 0 .../jenkins-vars.yml | 0 .../package_versions.txt | 0 .../readme-vars.yml | 0 .../dependencies.d/init-config | 0 .../s6-overlay/s6-rc.d/init-code-server/run | 0 .../s6-overlay/s6-rc.d/init-code-server/type | 0 .../s6-overlay/s6-rc.d/init-code-server/up | 0 .../dependencies.d/init-code-server | 0 .../dependencies.d/init-services | 0 .../s6-rc.d/svc-code-server/notification-fd | 0 .../s6-overlay/s6-rc.d/svc-code-server/run | 0 .../s6-overlay/s6-rc.d/svc-code-server/type | 0 .../s6-rc.d/user/contents.d/init-code-server | 0 .../s6-rc.d/user/contents.d/svc-code-server | 0 .../root/usr/local/bin/install-extension | 0 docker/nginx/Dockerfile | 32 +++++ docker/nginx/default.conf | 29 +++++ docker/nginx/nginx.conf | 50 +++++++ docker/nginx/start.sh | 2 + .../Dockerfile | 10 +- python/Dockerfile | 33 +++++ python/{main.py => app.py} | 13 +- python/requirements.txt | 4 + python/student_func.py | 2 +- python/teacher_func.py | 2 +- python/test.py | 6 - python/wsgi.py | 5 + 43 files changed, 406 insertions(+), 18 deletions(-) create mode 100755 app-dm/.dockerignore create mode 100755 app-dm/Dockerfile create mode 100755 build.sh create mode 100755 docker-compose.yml create mode 100755 docker/base-dm/Dockerfile create mode 100755 docker/build-dmpython/Dockerfile create mode 100755 docker/build-dmpython/auto_install.xml rename docker/{docker-code-server => code-server}/.dockerignore (100%) rename docker/{docker-code-server => code-server}/.editorconfig (100%) rename docker/{docker-code-server => code-server}/.gitignore (100%) rename docker/{docker-code-server => code-server}/Dockerfile (100%) rename docker/{docker-code-server => code-server}/Jenkinsfile (100%) rename docker/{docker-code-server => code-server}/LICENSE (100%) rename docker/{docker-code-server => code-server}/README.md (100%) rename docker/{docker-code-server => code-server}/jenkins-vars.yml (100%) rename docker/{docker-code-server => code-server}/package_versions.txt (100%) rename docker/{docker-code-server => code-server}/readme-vars.yml (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-config (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/init-code-server/run (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/init-code-server/type (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/init-code-server/up (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-code-server (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/svc-code-server/dependencies.d/init-services (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/svc-code-server/notification-fd (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/svc-code-server/run (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/svc-code-server/type (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-code-server (100%) rename docker/{docker-code-server => code-server}/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-code-server (100%) rename docker/{docker-code-server => code-server}/root/usr/local/bin/install-extension (100%) create mode 100755 docker/nginx/Dockerfile create mode 100755 docker/nginx/default.conf create mode 100755 docker/nginx/nginx.conf create mode 100755 docker/nginx/start.sh rename docker/{docker-ssh-server => ssh-server}/Dockerfile (74%) create mode 100755 python/Dockerfile rename python/{main.py => app.py} (93%) create mode 100755 python/requirements.txt delete mode 100755 python/test.py create mode 100755 python/wsgi.py diff --git a/.gitignore b/.gitignore index 4dba3ed..cdd94a1 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea node_modules -__pycache__ \ No newline at end of file +__pycache__ +public \ No newline at end of file diff --git a/app-dm/.dockerignore b/app-dm/.dockerignore new file mode 100755 index 0000000..4dba3ed --- /dev/null +++ b/app-dm/.dockerignore @@ -0,0 +1,3 @@ +.idea +node_modules +__pycache__ \ No newline at end of file diff --git a/app-dm/Dockerfile b/app-dm/Dockerfile new file mode 100755 index 0000000..00356e0 --- /dev/null +++ b/app-dm/Dockerfile @@ -0,0 +1,14 @@ +FROM node:22 AS builder + +WORKDIR /usr/src/app + +COPY package.json package-lock.json ./ + +RUN npm config set registry https://registry.npmmirror.com + +RUN npm install + +COPY . ./ + +#RUN NODE_OPTIONS=--max_old_space_size=8192 yarn build +RUN npm run build diff --git a/app-dm/package.json b/app-dm/package.json index 9d38bc0..ccc49a9 100755 --- a/app-dm/package.json +++ b/app-dm/package.json @@ -44,7 +44,7 @@ "start": "react-scripts start", "test": "react-scripts test", "eject": "react-scripts eject", - "build": "postcss src/style.css -o dist/tailwind.css" + "build": "react-scripts build" }, "eslintConfig": { "extends": [ diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..cd973f0 --- /dev/null +++ b/build.sh @@ -0,0 +1,3 @@ +docker compose build +docker compose build build-dmpython +docker compose build build-frontend \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100755 index 0000000..a00f43d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,47 @@ + +services: + base-dm: + build: ./docker/base-dm + image: base-dm + + build-dmpython: + build: ./docker/build-dmpython + image: build-dmpython + depends_on: + - base-dm + + build-frontend: + build: ./app-dm + image: build-frontend + + flask-app: + build: ./python + restart: always + depends_on: + - base-dm + ports: + - '8000:8000' + healthcheck: + test: ["CMD-SHELL", "curl --silent --fail localhost:8000/flask-health-check || exit 1"] + interval: 10s + timeout: 10s + retries: 3 + command: gunicorn -w 3 -t 60 -b 0.0.0.0:8000 app:app + + nginx-proxy: + build: ./docker/nginx + restart: always + volumes: + - ./docker/nginx/default.conf:/tmp/default.conf + environment: + - FLASK_SERVER_ADDR=flask-app:8000 + ports: + - "80:80" + depends_on: + - flask-app + healthcheck: + test: ["CMD-SHELL", "curl --silent --fail localhost:80/health-check || exit 1"] + interval: 10s + timeout: 10s + retries: 3 + command: /app/start.sh diff --git a/docker/base-dm/Dockerfile b/docker/base-dm/Dockerfile new file mode 100755 index 0000000..ad460c9 --- /dev/null +++ b/docker/base-dm/Dockerfile @@ -0,0 +1,35 @@ +FROM ubuntu +# apt安装时,防止卡死在交互界面 +ENV DEBIAN_FRONTEND=noninteractive +ENV LANG=zh_CN.UTF-8 +ENV LC_ALL=zh_CN.UTF-8 +# 基础软件安装 +RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list \ +&& apt-get -y update && apt-get -y upgrade \ +&& apt-get install -y python3.10-venv libssl-dev sudo vim python3-pip ssh wget unzip p7zip* language-pack-zh-hans language-selector-common locales locales-all \ +# 设置中文环境 +&& apt install -y $(check-language-support) \ +&& echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen \ +&& sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 \ +&& locale-gen \ +# 添加用户 +&& useradd -m -s /bin/bash dmdba \ +# 修改用户密码 +&& echo "dmdba:123456" | chpasswd \ +&& pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple \ +&& echo "**** clean up ****" && \ +apt-get clean && \ +rm -rf \ + /config/* \ + /tmp/* \ + /var/lib/apt/lists/* \ + /var/tmp/* +# 传入安装包并解压 +WORKDIR /home/dmdba +RUN wget https://download.dameng.com/eco/adapter/DM8/202405/dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip +RUN unzip dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip \ +&& chown -R dmdba:dmdba /home/dmdba \ +&& rm -f dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip \ +&& 7z x dm8_20240408_x86_rh7_64.iso \ +&& rm -f dm8_20240408_x86_rh7_64.iso \ +&& chmod +x DMInstall.bin \ No newline at end of file diff --git a/docker/build-dmpython/Dockerfile b/docker/build-dmpython/Dockerfile new file mode 100755 index 0000000..ccd5865 --- /dev/null +++ b/docker/build-dmpython/Dockerfile @@ -0,0 +1,7 @@ +FROM base-dm +WORKDIR /home/dmdba +COPY auto_install.xml . +RUN ./DMInstall.bin -q /home/dmdba/auto_install.xml +# 编译 +WORKDIR /home/dmdba/dmdbms/drivers/python/dmPython +RUN DM_HOME=/home/dmdba/dmdbms python3 setup.py bdist_wheel && mkdir /home/dmdba/build_artifacts && cp dist/dmPython-2.5.5-cp310-cp310-linux_x86_64.whl /home/dmdba/build_artifacts/ && cp /home/dmdba/dmdbms/bin/libdmdpi.so /home/dmdba/build_artifacts/ diff --git a/docker/build-dmpython/auto_install.xml b/docker/build-dmpython/auto_install.xml new file mode 100755 index 0000000..7a68ff0 --- /dev/null +++ b/docker/build-dmpython/auto_install.xml @@ -0,0 +1,122 @@ + + + + ZH + + + +08:00 + + + + + + 0 + + + /home/dmdba/dmdbms + + + y + + + + + /home/dmdba/dmdbms/data + + + DAMENG + + + DMSERVER + + + 5236 + + + + + + + + + + + + 16 + + + 8 + + + 256 + + + Y + + + 0 + + + 0 + + + 1 + + + + + + + + + + + + + + + +08:00 + + + 0 + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + 0 + + + + + + + Y + + + N + \ No newline at end of file diff --git a/docker/docker-code-server/.dockerignore b/docker/code-server/.dockerignore similarity index 100% rename from docker/docker-code-server/.dockerignore rename to docker/code-server/.dockerignore diff --git a/docker/docker-code-server/.editorconfig b/docker/code-server/.editorconfig similarity index 100% rename from docker/docker-code-server/.editorconfig rename to docker/code-server/.editorconfig diff --git a/docker/docker-code-server/.gitignore b/docker/code-server/.gitignore similarity index 100% rename from docker/docker-code-server/.gitignore rename to docker/code-server/.gitignore diff --git a/docker/docker-code-server/Dockerfile b/docker/code-server/Dockerfile similarity index 100% rename from docker/docker-code-server/Dockerfile rename to docker/code-server/Dockerfile diff --git a/docker/docker-code-server/Jenkinsfile b/docker/code-server/Jenkinsfile similarity index 100% rename from docker/docker-code-server/Jenkinsfile rename to docker/code-server/Jenkinsfile diff --git a/docker/docker-code-server/LICENSE b/docker/code-server/LICENSE similarity index 100% rename from docker/docker-code-server/LICENSE rename to docker/code-server/LICENSE diff --git a/docker/docker-code-server/README.md b/docker/code-server/README.md similarity index 100% rename from docker/docker-code-server/README.md rename to docker/code-server/README.md diff --git a/docker/docker-code-server/jenkins-vars.yml b/docker/code-server/jenkins-vars.yml similarity index 100% rename from docker/docker-code-server/jenkins-vars.yml rename to docker/code-server/jenkins-vars.yml diff --git a/docker/docker-code-server/package_versions.txt b/docker/code-server/package_versions.txt similarity index 100% rename from docker/docker-code-server/package_versions.txt rename to docker/code-server/package_versions.txt diff --git a/docker/docker-code-server/readme-vars.yml b/docker/code-server/readme-vars.yml similarity index 100% rename from docker/docker-code-server/readme-vars.yml rename to docker/code-server/readme-vars.yml diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-config b/docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-config similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-config rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-config diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/run b/docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/run similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/run rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/run diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/type b/docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/type similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/type rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/type diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/up b/docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/up similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/up rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/init-code-server/up diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-code-server b/docker/code-server/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-code-server similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-code-server rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-code-server diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/dependencies.d/init-services b/docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/dependencies.d/init-services similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/dependencies.d/init-services rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/dependencies.d/init-services diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/notification-fd b/docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/notification-fd similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/notification-fd rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/notification-fd diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/run b/docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/run similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/run rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/run diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/type b/docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/type similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/type rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/svc-code-server/type diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-code-server b/docker/code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-code-server similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-code-server rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-code-server diff --git a/docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-code-server b/docker/code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-code-server similarity index 100% rename from docker/docker-code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-code-server rename to docker/code-server/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-code-server diff --git a/docker/docker-code-server/root/usr/local/bin/install-extension b/docker/code-server/root/usr/local/bin/install-extension similarity index 100% rename from docker/docker-code-server/root/usr/local/bin/install-extension rename to docker/code-server/root/usr/local/bin/install-extension diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile new file mode 100755 index 0000000..08a5997 --- /dev/null +++ b/docker/nginx/Dockerfile @@ -0,0 +1,32 @@ +FROM nginx:1.19.7-alpine + +# Add bash for boot cmd +RUN apk add bash + +# Add nginx.conf to container +COPY --chown=nginx:nginx nginx.conf /etc/nginx/nginx.conf +COPY --chown=nginx:nginx start.sh /app/start.sh + +# set workdir +WORKDIR /app + +# permissions and nginx user for tightened security +RUN chown -R nginx:nginx /app && chmod -R 755 /app && \ + chown -R nginx:nginx /var/cache/nginx && \ + chown -R nginx:nginx /var/log/nginx && \ + chmod -R 755 /var/log/nginx; \ + chown -R nginx:nginx /etc/nginx/conf.d +RUN touch /var/run/nginx.pid && chown -R nginx:nginx /var/run/nginx.pid + +# # Uncomment to keep the nginx logs inside the container - Leave commented for logging to stdout and stderr +# RUN mkdir -p /var/log/nginx +# RUN unlink /var/log/nginx/access.log \ +# && unlink /var/log/nginx/error.log \ +# && touch /var/log/nginx/access.log \ +# && touch /var/log/nginx/error.log \ +# && chown nginx /var/log/nginx/*log \ +# && chmod 644 /var/log/nginx/*log + +USER nginx + +CMD ["nginx", "-g", "'daemon off;'"] \ No newline at end of file diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100755 index 0000000..686961a --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,29 @@ +proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache:10m max_size=500m inactive=60m use_temp_path=off; + +server { + listen 80; + + location / { + proxy_pass http://$FLASK_SERVER_ADDR; + 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 /cache-me { + proxy_pass http://$FLASK_SERVER_ADDR; + proxy_cache cache; + proxy_cache_lock on; + proxy_cache_valid 200 30s; + proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; + proxy_cache_revalidate on; + proxy_cache_background_update on; + expires 20s; + } + + location /health-check { + add_header Content-Type text/plain; + return 200 "success"; + } + +} \ No newline at end of file diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf new file mode 100755 index 0000000..a6121ff --- /dev/null +++ b/docker/nginx/nginx.conf @@ -0,0 +1,50 @@ +worker_processes auto; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # Define the format of log messages. + log_format main_ext '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for" ' + '"$host" sn="$server_name" ' + 'rt=$request_time ' + 'ua="$upstream_addr" us="$upstream_status" ' + 'ut="$upstream_response_time" ul="$upstream_response_length" ' + 'cs=$upstream_cache_status' ; + + access_log /var/log/nginx/access.log main_ext; + error_log /var/log/nginx/error.log warn; + + sendfile on; + + keepalive_timeout 65; + + # Enable Compression + gzip on; + + # Disable Display of NGINX Version + server_tokens off; + + # Size Limits + client_body_buffer_size 10K; + client_header_buffer_size 1k; + client_max_body_size 8m; + large_client_header_buffers 2 1k; + + # # SSL / TLS Settings - Suggested for Security + # ssl_protocols TLSv1.2 TLSv1.3; + # ssl_session_timeout 15m; + # ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; + # ssl_prefer_server_ciphers on; + # ssl_session_tickets off; + + include /etc/nginx/conf.d/*.conf; + +} \ No newline at end of file diff --git a/docker/nginx/start.sh b/docker/nginx/start.sh new file mode 100755 index 0000000..d3c7ac2 --- /dev/null +++ b/docker/nginx/start.sh @@ -0,0 +1,2 @@ +#!/bin/bash +envsubst '$FLASK_SERVER_ADDR' < /tmp/default.conf > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;' \ No newline at end of file diff --git a/docker/docker-ssh-server/Dockerfile b/docker/ssh-server/Dockerfile similarity index 74% rename from docker/docker-ssh-server/Dockerfile rename to docker/ssh-server/Dockerfile index 152f312..048c94f 100755 --- a/docker/docker-ssh-server/Dockerfile +++ b/docker/ssh-server/Dockerfile @@ -16,11 +16,11 @@ RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.l # 修改用户密码 && echo "dmdba:123456" | chpasswd # 传入安装包并解压 -COPY ./data/dm8.zip /home/dmdba -RUN cd /home/dmdba \ -&& unzip dm8.zip \ +WORKDIR /home/dmdba +RUN wget https://download.dameng.com/eco/adapter/DM8/202405/dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip +RUN unzip dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip \ && chown -R dmdba:dmdba /home/dmdba \ -&& rm -f dm8.zip \ +&& rm -f dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip \ && 7z x dm8_20240408_x86_rh7_64.iso \ && rm -f dm8_20240408_x86_rh7_64.iso \ -&& chmod +x DMInstall.bin \ No newline at end of file +&& chmod +x DMInstall.bin diff --git a/python/Dockerfile b/python/Dockerfile new file mode 100755 index 0000000..ac80947 --- /dev/null +++ b/python/Dockerfile @@ -0,0 +1,33 @@ +FROM base-dm + +# 升级pip +RUN pip install --upgrade pip + +# 创建一个用户运行flask +RUN adduser flask +RUN chown -R flask:flask /home/flask +RUN mkdir -p /var/log/flask-app && touch /var/log/flask-app/flask-app.err.log && touch /var/log/flask-app/flask-app.out.log +RUN chown -R flask:flask /var/log/flask-app +WORKDIR /home/flask +USER flask + +# 复制 +COPY --chown=flask:flask . . + +# venv +ENV VIRTUAL_ENV=/home/flask/venv + +# 安装包 +RUN python3 -m venv "$VIRTUAL_ENV" +ENV PATH="$VIRTUAL_ENV/bin:$PATH" +RUN export FLASK_APP=main.py +COPY --from=build-dmpython --chown=flask:flask /home/dmdba/build_artifacts/dmPython-2.5.5-cp310-cp310-linux_x86_64.whl . +COPY --from=build-dmpython /home/dmdba/build_artifacts/libdmdpi.so /usr/lib/ +COPY --from=build-frontend /usr/src/app/build/ /home/flask/public/ +RUN pip3 install dmPython-2.5.5-cp310-cp310-linux_x86_64.whl && rm dmPython-2.5.5-cp310-cp310-linux_x86_64.whl +RUN MAKEFLAGS="-j$(nproc)" pip install -r requirements.txt +USER root +# 暴露端口 +EXPOSE 5000 + +CMD ["python", "main.py"] \ No newline at end of file diff --git a/python/main.py b/python/app.py similarity index 93% rename from python/main.py rename to python/app.py index 874fc74..df6673a 100755 --- a/python/main.py +++ b/python/app.py @@ -1,9 +1,9 @@ from teacher_func import * from student_func import * -from flask import Flask, request, jsonify, session, redirect +from flask import Flask, render_template, request, jsonify, send_from_directory, session from flask_cors import CORS -app = Flask(__name__) +app = Flask(__name__, static_folder="public") CORS(app, resources={r"/*": {"origins": "*"}}) app.config['SECRET_KEY'] = '350625' @@ -209,6 +209,13 @@ def SendTrainTest(): SendTrainTestFunc(TrainChoice, TrainCompletion, TrainJudge, Hour, Min, StopTime,Class,Train,teacher_id) return '发布成功' +@app.route('/') +@app.route('/') +def catch_all(path = "index.html"): + return send_from_directory("public", path) + + + if __name__ == '__main__': - app.run(host='127.0.0.1', port=5000, debug=True) + app.run(host='0.0.0.0', port=5000, debug=True) diff --git a/python/requirements.txt b/python/requirements.txt new file mode 100755 index 0000000..1eddad4 --- /dev/null +++ b/python/requirements.txt @@ -0,0 +1,4 @@ +Flask==2.3.0 +Flask_Cors==4.0.0 +pycryptodome==3.19.0 +gunicorn \ No newline at end of file diff --git a/python/student_func.py b/python/student_func.py index cb4c8d8..5cc7bcf 100755 --- a/python/student_func.py +++ b/python/student_func.py @@ -4,7 +4,7 @@ from Crypto.Cipher import AES from Crypto.Random import get_random_bytes import base64 -db = dmPython.connect(user='SYSDBA', password='SYSDBA') +db = dmPython.connect(user='SYSDBA', password='dameng!!', host="36.138.114.105", port="32522") def pad(data): diff --git a/python/teacher_func.py b/python/teacher_func.py index 537c356..acd83c4 100755 --- a/python/teacher_func.py +++ b/python/teacher_func.py @@ -6,7 +6,7 @@ import base64 import datetime -db = dmPython.connect(user='SYSDBA', password='SYSDBA') +db = dmPython.connect(user='SYSDBA', password='dameng!!', host="36.138.114.105", port="32522") #获取题目 def choice_question_func(ID): diff --git a/python/test.py b/python/test.py deleted file mode 100755 index ac4437b..0000000 --- a/python/test.py +++ /dev/null @@ -1,6 +0,0 @@ -my_dict = {'name': 'Tom', 'age': 18, 'gender': 'ale'} - -# 在原来的键上添加新的值 -my_dict['name'] = 'Jerry' - -print(my_dict) \ No newline at end of file diff --git a/python/wsgi.py b/python/wsgi.py new file mode 100755 index 0000000..e6d548e --- /dev/null +++ b/python/wsgi.py @@ -0,0 +1,5 @@ +from app import app +import os + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=os.environ.get("FLASK_SERVER_PORT"), debug=True) \ No newline at end of file