From 5bd57232d8cc584dd96bbdad54f31c8839f08d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 18 Mar 2024 21:22:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96docker=E9=83=A8?= =?UTF-8?q?=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/conf/env.example.py | 4 +++- docker-compose.yml | 4 ++-- docker_env/django/Dockerfile | 2 +- docker_env/mysql/conf.d/my.cnf | 6 +++--- init.sh | 31 +++++++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 init.sh diff --git a/backend/conf/env.example.py b/backend/conf/env.example.py index bf015db..3d1db25 100644 --- a/backend/conf/env.example.py +++ b/backend/conf/env.example.py @@ -21,13 +21,15 @@ DATABASE_PORT = 3306 # # 数据库用户名 DATABASE_USER = "root" # # 数据库密码 -DATABASE_PASSWORD = "DVADMIN3" +DATABASE_PASSWORD = 'DVADMIN3' # 表前缀 TABLE_PREFIX = "dvadmin_" # ================================================= # # ******** redis配置,无redis 可不进行配置 ******** # # ================================================= # +REDIS_DB = 1 +CELERY_BROKER_DB = 3 REDIS_PASSWORD = 'DVADMIN3' REDIS_HOST = '127.0.0.1' REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' diff --git a/docker-compose.yml b/docker-compose.yml index c08a0ef..70f9271 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,7 +50,7 @@ services: ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD: "DVADMIN3" + MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: "django-vue3-admin" TZ: Asia/Shanghai command: @@ -101,7 +101,7 @@ services: - "6379:6379" sysctls: # 设置容器中的内核参数 - net.core.somaxconn=1024 - command: /bin/sh -c "echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf && redis-server /etc/redis/redis.conf --appendonly yes --requirepass DVADMIN3" # 指定配置文件并开启持久化 + command: /bin/sh -c "echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf && redis-server /etc/redis/redis.conf --appendonly yes --requirepass ${MYSQL_PASSWORD}" # 指定配置文件并开启持久化 privileged: true # 使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限 networks: network: diff --git a/docker_env/django/Dockerfile b/docker_env/django/Dockerfile index 7acd383..427ed0c 100644 --- a/docker_env/django/Dockerfile +++ b/docker_env/django/Dockerfile @@ -3,7 +3,7 @@ WORKDIR /backend COPY ./backend/ . RUN ls ./conf/ RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' -RUN sed -i "s|DATABASE_HOST = "127.0.0.1"|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py +RUN sed -i "s|DATABASE_HOST = '127.0.0.1'|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py RUN sed -i "s|REDIS_HOST = '127.0.0.1'|REDIS_HOST = '177.10.0.1'|g" ./conf/env.py RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt CMD ["/backend/docker_start.sh"] diff --git a/docker_env/mysql/conf.d/my.cnf b/docker_env/mysql/conf.d/my.cnf index b9525ed..469af8b 100644 --- a/docker_env/mysql/conf.d/my.cnf +++ b/docker_env/mysql/conf.d/my.cnf @@ -1,7 +1,7 @@ [mysql] #设置mysql客户端默认字符集 default-character-set=utf8 -socket=/var/run/mysql/mysql.sock +socket=/var/lib/mysql/mysql.sock [mysqld] @@ -9,7 +9,7 @@ socket=/var/run/mysql/mysql.sock #mysql5.7以后的不兼容问题处理 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES datadir=/var/lib/mysql -socket=/var/run/mysql/mysql.sock +socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 @@ -30,4 +30,4 @@ default-time_zone='+8:00' [mysqld_safe] log-error=/var/log/mariadb/mariadb.log -pid-file=/var/run/mariadb/mariadb.pid +pid-file=/var/lib/mariadb/mariadb.pid diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..8c377ed --- /dev/null +++ b/init.sh @@ -0,0 +1,31 @@ +#!/bin/bash +ENV_FILE=".env" +# 检查 .env 文件是否存在 +if [ -f "$ENV_FILE" ]; then + echo "$ENV_FILE 文件已存在。" +else + # 生成MYSQL随机密码 + MYSQL_PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 18) + echo "MYSQL_PASSWORD=$MYSQL_PASSWORD" >> "$ENV_FILE" + echo "MYSQL随机密码已生成并写入 $ENV_FILE 文件。" + # 生成REDIS随机密码 + REDIS_PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12) + # 将密码写入 .env 文件 + echo "REDIS_PASSWORD=$REDIS_PASSWORD" >> "$ENV_FILE" + echo "REDIS随机密码已生成并写入 $ENV_FILE 文件。" + + awk 'BEGIN { cmd="cp -i ./backend/conf/env.example.py ./backend/conf/env.py "; print "n" |cmd; }' + sed -i "s|DATABASE_HOST = '127.0.0.1'|DATABASE_HOST = '177.10.0.13'|g" ./backend/conf/env.py + sed -i "s|REDIS_HOST = '127.0.0.1'|REDIS_HOST = '177.10.0.15'|g" ./backend/conf/env.py + sed -i "s|DATABASE_PASSWORD = 'DVADMIN3'|DATABASE_PASSWORD = '$MYSQL_PASSWORD'|g" ./backend/conf/env.py + sed -i "s|REDIS_PASSWORD = 'DVADMIN3'|REDIS_PASSWORD = '$REDIS_PASSWORD'|g" ./backend/conf/env.py + echo "初始化密码创建成功" +fi + +docker-compose up -d +docker exec dvadmin3-django python manage.py makemigrations +docker exec dvadmin3-django python manage.py migrate +docker exec dvadmin3-django python manage.py init +echo "欢迎使用dvadmin3项目" +echo "登录地址:http://ip:8080" +echo "如访问不到,请检查防火墙配置"