Просмотр исходного кода

docker에서도 mysql 설정 지원하도록 추가중

bass9030 9 месяцев назад
Родитель
Сommit
0a0de6de12
2 измененных файлов с 64 добавлено и 1 удалено
  1. 39 0
      docker-compose.yaml
  2. 25 1
      route/tool/func.py

+ 39 - 0
docker-compose.yaml

@@ -0,0 +1,39 @@
+services:
+    opennamu:
+        container_name: opennamu
+        image: opennamu:latest
+        build:
+            context: .
+            dockerfile: Dockerfile.ko
+        ports:
+            - "3000:3000"
+        volumes:
+            - ./data:/app/data
+        environment:
+            NAMU_DB_TYPE: mysql
+            NAMU_DB: data
+            NAMU_DB_HOST: db
+            NAMU_DB_PORT: 3306
+            NAMU_DB_USER: opennamu
+            NAMU_DB_PASSWORD: opennamu_password
+            NAMU_HOST: 0.0.0.0
+            NAMU_PORT: 3000
+            NAMU_GOLANGPORT: 3001
+            NAMU_LANG: ko-KR
+            NAMU_MARKUP: namumark
+            NAMU_ENCRYPT: sha3
+            NAMU_DOCKER: O
+        depends_on:
+            - db
+
+    db:
+        container_name: opennamu_db
+        image: mysql:8.0
+        restart: always
+        environment:
+            MYSQL_ROOT_PASSWORD: root_password
+            MYSQL_DATABASE: data
+            MYSQL_USER: opennamu
+            MYSQL_PASSWORD: opennamu_password
+        volumes:
+            - ./db_data:/var/lib/mysql

+ 25 - 1
route/tool/func.py

@@ -338,7 +338,31 @@ class class_check_json:
         return data_db_set
         return data_db_set
 
 
     def do_check_mysql_json(self, data_db_set):
     def do_check_mysql_json(self, data_db_set):
-        if os.path.exists(os.path.join('data', 'mysql.json')):
+        
+        def do_check_mysql_env():
+            env_keys = ['NAMU_DB_HOST', 'NAMU_DB_PORT', 'NAMU_DB_USER', 'NAMU_DB_PASSWORD']
+            vaild = False
+            for key in env_keys:
+                if os.getenv(key):
+                    vaild = True
+                    break
+            return vaild
+        
+        if do_check_mysql_env():
+            # ['user', 'password', 'host', 'port']
+            set_data_mysql = {}
+            set_data_mysql['host'] = os.getenv('NAMU_DB_HOST') if os.getenv('NAMU_DB_HOST') else 'localhost'
+            set_data_mysql['port'] = os.getenv('NAMU_DB_PORT') if os.getenv('NAMU_DB_PORT') else 3306
+
+            if not os.getenv('NAMU_DB_USER'):
+                raise Exception('Error : NAMU_DB_USER env not set')
+            else: 
+                set_data_mysql['user'] = os.getenv('NAMU_DB_USER')
+            if not os.getenv('NAMU_DB_PASSWORD'):
+                raise Exception('Error : NAMU_DB_PASSWORD env not set')
+            else:
+                set_data_mysql['password'] = os.getenv('NAMU_DB_PASSWORD')
+        elif os.path.exists(os.path.join('data', 'mysql.json')):
             db_set_list = ['user', 'password', 'host', 'port']
             db_set_list = ['user', 'password', 'host', 'port']
             with open(os.path.join('data', 'mysql.json'), encoding = 'utf8') as file_data:
             with open(os.path.join('data', 'mysql.json'), encoding = 'utf8') as file_data:
                 set_data = json_loads(file_data.read())
                 set_data = json_loads(file_data.read())