Skip to content

Commit 3d684b5

Browse files
committed
Optimize Docker image generation process
1 parent 55966b5 commit 3d684b5

File tree

6 files changed

+41
-28
lines changed

6 files changed

+41
-28
lines changed

Dockerfile

+1-5
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@ FROM python:3.9
22

33
WORKDIR /code
44

5-
COPY ./requirements.txt /code/requirements.txt
5+
COPY ./* /code/*
66

77
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
88

9-
COPY ./main.py /code/main.py
10-
11-
COPY ./MysqlConn.py /code/MysqlConn.py
12-
139
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]

MysqlConn.py

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
import pymysql
2-
import json
3-
42

53
class MysqlConn:
6-
def __init__(self):
4+
def __init__(self, host, port, user, password, database):
75
self.conn = None
86
self.cursor = None
9-
with open("config/db.json", "r") as f:
10-
mysql_config = json.loads(f.read())
11-
self.__host = mysql_config["host"]
12-
self.__port = mysql_config["port"]
13-
self.__user = mysql_config["user"]
14-
self.__password = mysql_config["password"]
15-
self.__database = mysql_config["database"]
7+
self.__host = host
8+
self.__port = port
9+
self.__user = user
10+
self.__password = password
11+
self.__database = database
1612

1713
def connect(self):
1814
try:

config/api_config.py renamed to api_config.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os
2+
13
ACCEPTED_LANGUAGES = ["chs", "cht", "de", "en", "es", "fr", "id", "jp", "kr", "pt", "ru", "th", "vi",
24
"zh-cn", "zh-tw", "de-de", "en-us", "es-es", "fr-fr", "id-id", "ja-jp", "ko-kr", "pt-pt", "ru-ru",
35
"th-th", "vi-vn"]
@@ -30,5 +32,12 @@
3032
"vi-vn": "vi",
3133
"all": "all"
3234
}
33-
TOKEN = "5XKknUbCQCKq4KDC5HPLheMZ" # change this
34-
DOCS_URL = "/api/v1/docs" # change this
35+
# App Settings
36+
TOKEN = os.environ['TOKEN']
37+
DOCS_URL = os.environ['DOCS_URL']
38+
# MySQL Settings
39+
DB_HOST = os.environ['DB_HOST']
40+
DB_PORT = os.environ['DB_PORT']
41+
DB_USER = os.environ['DB_USER']
42+
DB_PASSWORD = os.environ['DB_PASSWORD']
43+
DB_NAME = os.environ['DB_NAME']

config/db.json

-7
This file was deleted.

main.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
from fastapi.responses import RedirectResponse, FileResponse
33
from MysqlConn import MysqlConn
44
import json
5-
import os
65
import requests
7-
from config.api_config import ACCEPTED_LANGUAGES, TOKEN, DOCS_URL, LANGUAGE_PAIRS
6+
from api_config import *
87

98
app = FastAPI(docs_url=DOCS_URL, redoc_url=None)
10-
db = MysqlConn()
9+
db = MysqlConn(DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME)
1110

1211

1312
@app.get("/", response_class=RedirectResponse, status_code=302)

run.sh

+21-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,33 @@
1+
# Docker Image Settings
12
imageName=uigf-api
23
containerName=UIGF-API
34
imageVersion=1.1
45
internalPort=3052
56
ExternalPort=8080
7+
# Docker Network Settings
8+
assignedNetwork=dgp-network
9+
assignedIP=172.18.0.3
10+
# App Settings
11+
TOKEN=H3HYiDe84tZzWqHc
12+
DOCS_URL=/api/v1/docs
13+
# MySQL Settings
14+
DB_HOST=127.0.0.1
15+
DB_PORT=3306
16+
DB_USER=uigf
17+
DB_PASSWORD=uigf
18+
DB_NAME=uigf_dict
619

720
docker build -f Dockerfile -t $imageName:$imageVersion .
821
docker run -d -itp $internalPort:$ExternalPort \
922
--restart=always \
1023
--name="$containerName-$imageVersion" \
11-
--mount type=bind,source="$(pwd)"/config,target=/code/config \
24+
--net $assignedNetwork --ip $assignedIP \
1225
--mount type=bind,source="$(pwd)"/dict,target=/code/dict \
26+
--env TOKEN=$TOKEN \
27+
--env DOCS_URL=$DOCS_URL \
28+
--env DB_HOST=$DB_HOST \
29+
--env DB_PORT=$DB_PORT \
30+
--env DB_USER=$DB_USER \
31+
--env DB_PASSWORD=$DB_PASSWORD \
32+
--env DB_NAME=$DB_NAME \
1333
$imageName:$imageVersion

0 commit comments

Comments
 (0)