bass9030 před 9 měsíci
rodič
revize
ffe706db4a
4 změnil soubory, kde provedl 46 přidání a 28 odebrání
  1. 14 10
      Dockerfile.ko
  2. 2 0
      debug_build.sh
  3. 21 14
      docker-compose.yaml
  4. 9 4
      route/tool/func.py

+ 14 - 10
Dockerfile.ko

@@ -1,22 +1,26 @@
-FROM python:3.11.10-slim
+FROM python:3.11
 
 MAINTAINER 2du <min08101@naver.com>
 MAINTAINER hoparkgo9ma <me@ho9.me>
 
-ENV NAMU_DB_TYPE sqlite
-ENV NAMU_DB data
-ENV NAMU_HOST 0.0.0.0
-ENV NAMU_PORT 3000
-ENV NAMU_GOLANGPORT 3001
-ENV NAMU_LANG ko-KR
-ENV NAMU_MARKUP namumark
-ENV NAMU_ENCRYPT sha3
-ENV NAMU_DOCKER O
+
+ENV NAMU_DB_TYPE=sqlite
+ENV NAMU_DB=data
+ENV NAMU_HOST=0.0.0.0
+ENV NAMU_PORT=3000
+ENV NAMU_GOLANGPORT=3001
+ENV NAMU_LANG=ko-KR
+ENV NAMU_MARKUP=namumark
+ENV NAMU_ENCRYPT=sha3
+ENV NAMU_DOCKER=O
 
 ADD . /app
 WORKDIR /app
 
+# RUN echo "nameserver 1.1.1.1" >> /etc/resolv.conf
 RUN pip install -r requirements.txt
+RUN pip install -r requirements-optional.txt
+
 EXPOSE 3000
 
 CMD [ "python", "./app.py" ]

+ 2 - 0
debug_build.sh

@@ -0,0 +1,2 @@
+sudo rm -rf *_data
+docker compose up --build

+ 21 - 14
docker-compose.yaml

@@ -1,34 +1,36 @@
 services:
-    opennamu:
-        container_name: opennamu
-        image: opennamu:latest
+    opennamu-web:
+        container_name: opennamu-web
+        # image: opennamu:latest
         build:
             context: .
             dockerfile: Dockerfile.ko
         ports:
             - "3000:3000"
         volumes:
-            - ./data:/app/data
+            - ./docker_data:/app/data
         environment:
             NAMU_DB_TYPE: mysql
             NAMU_DB: data
-            NAMU_DB_HOST: db
+            NAMU_DB_HOST: opennamu-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
+            # NAMU_HOST: 0.0.0.0
+            # NAMU_PORT: 3000
+            # NAMU_GOLANGPORT: 3001
+            # NAMU_ENCRYPT: sha3
+            # NAMU_DOCKER: O
+        networks:
+            - opennamu
         depends_on:
-            - db
+            - opennamu-db
 
-    db:
-        container_name: opennamu_db
-        image: mysql:8.0
+    opennamu-db:
+        container_name: opennamu-db
+        image: mysql:latest
         restart: always
         environment:
             MYSQL_ROOT_PASSWORD: root_password
@@ -37,3 +39,8 @@ services:
             MYSQL_PASSWORD: opennamu_password
         volumes:
             - ./db_data:/var/lib/mysql
+        networks:
+            - opennamu
+
+networks:
+    opennamu:

+ 9 - 4
route/tool/func.py

@@ -25,13 +25,16 @@ print('Skin set version : ' + version_list['s_ver'])
 
 # Init-PIP_Install
 data_up_date = 1
-if os.path.exists(os.path.join('data', 'version.json')):
+if os.path.exists(os.path.join('data', 'version.json')): 
     with open(os.path.join('data', 'version.json'), encoding = 'utf8') as file_data:
         data_load_ver = file_data.read()
     
     if data_load_ver == version_list['r_ver']:
         data_up_date = 0
 
+if os.getenv('NAMU_DOCKER') == 'O': # skip update check when run at docker
+    data_up_date = 0
+
 if data_up_date == 1:
     with open(os.path.join('data', 'version.json'), 'w', encoding = 'utf8') as f:
         f.write(version_list['r_ver'])
@@ -259,7 +262,8 @@ class get_db_connect:
 
             self.conn = None
             try_cnt = 1
-            while (self.conn == None and not (self.conn.open() if self.conn != None else False)) and try_cnt <= 5:
+            max_try = 30
+            while (self.conn == None and not (self.conn.open() if self.conn != None else False)) and try_cnt <= max_try:
                 try:
                     if self.init_mode:
                         self.conn = pymysql.connect(
@@ -281,13 +285,14 @@ class get_db_connect:
                             db = self.db_set['db_name']
                         )
                 except pymysql.err.OperationalError as err:
-                    if try_cnt + 1 > 5:
+                    if try_cnt + 1 > max_try:
                         raise err
                     else:
-                        time.sleep(0.5)
                         continue
                 finally:
                     try_cnt += 1
+                    time.sleep(1)
+
             
             if self.conn == None:
                 raise Exception("Unable to connect database")