feat: 优化docker部署

This commit is contained in:
李强
2024-03-18 21:22:22 +08:00
parent 2cfd8f0798
commit 5bd57232d8
5 changed files with 40 additions and 7 deletions

View File

@@ -21,13 +21,15 @@ DATABASE_PORT = 3306
# # 数据库用户名 # # 数据库用户名
DATABASE_USER = "root" DATABASE_USER = "root"
# # 数据库密码 # # 数据库密码
DATABASE_PASSWORD = "DVADMIN3" DATABASE_PASSWORD = 'DVADMIN3'
# 表前缀 # 表前缀
TABLE_PREFIX = "dvadmin_" TABLE_PREFIX = "dvadmin_"
# ================================================= # # ================================================= #
# ******** redis配置无redis 可不进行配置 ******** # # ******** redis配置无redis 可不进行配置 ******** #
# ================================================= # # ================================================= #
REDIS_DB = 1
CELERY_BROKER_DB = 3
REDIS_PASSWORD = 'DVADMIN3' REDIS_PASSWORD = 'DVADMIN3'
REDIS_HOST = '127.0.0.1' REDIS_HOST = '127.0.0.1'
REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379'

View File

@@ -50,7 +50,7 @@ services:
ports: ports:
- "3306:3306" - "3306:3306"
environment: environment:
MYSQL_ROOT_PASSWORD: "DVADMIN3" MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: "django-vue3-admin" MYSQL_DATABASE: "django-vue3-admin"
TZ: Asia/Shanghai TZ: Asia/Shanghai
command: command:
@@ -101,7 +101,7 @@ services:
- "6379:6379" - "6379:6379"
sysctls: # 设置容器中的内核参数 sysctls: # 设置容器中的内核参数
- net.core.somaxconn=1024 - 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只是外部的一个普通用户权限 privileged: true # 使用该参数container内的root拥有真正的root权限。否则container内的root只是外部的一个普通用户权限
networks: networks:
network: network:

View File

@@ -3,7 +3,7 @@ WORKDIR /backend
COPY ./backend/ . COPY ./backend/ .
RUN ls ./conf/ RUN ls ./conf/
RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' 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 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 RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt
CMD ["/backend/docker_start.sh"] CMD ["/backend/docker_start.sh"]

View File

@@ -1,7 +1,7 @@
[mysql] [mysql]
#设置mysql客户端默认字符集 #设置mysql客户端默认字符集
default-character-set=utf8 default-character-set=utf8
socket=/var/run/mysql/mysql.sock socket=/var/lib/mysql/mysql.sock
[mysqld] [mysqld]
@@ -9,7 +9,7 @@ socket=/var/run/mysql/mysql.sock
#mysql5.7以后的不兼容问题处理 #mysql5.7以后的不兼容问题处理
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
datadir=/var/lib/mysql 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 # Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 symbolic-links=0
@@ -30,4 +30,4 @@ default-time_zone='+8:00'
[mysqld_safe] [mysqld_safe]
log-error=/var/log/mariadb/mariadb.log log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid pid-file=/var/lib/mariadb/mariadb.pid

31
init.sh Normal file
View File

@@ -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 "如访问不到,请检查防火墙配置"