도커 그누보드 이미지 localhost의 mysql db 사용
본문
◐ 도커 그누보드6 컨테이너 이미지에 localhost의 mysql db를 사용하여 실서비를 운영 중입니다.
홈서버(Localhost)에서 그누보드6과 함께 실서비스 중인 그누보드5를 localhost의 mysql db를 사용하는
컨테이너 이미지로 구성(docker-compose 사용) 하였는데, ~~~
"그누보드5의 정상적인 사용을 위해서는 GD 라이브러리가 필요합니다. GD 라이브러리가 없을 경우 자동등록방지 문자와 썸네일 기능이 작동하지 않습니다." http://ww.glitter.kr:8000/gate/install/
~~~ 위와 같은 경고와 함께 그누보드5 컨테이너 이미지가 localhost의 mysql db에 접근하지 못 합니다.
>>> 그누보드6 컨테이너는 localhost의 mysql db를 사용하여 실서비스 중입니다.
>>> 그누보드5 컨테이너 이미지( http://ww.glitter.kr:8000/gate/install/ ) 초기 설치 경고에도 ~~
>>> DB 접근 범위가 %인 사용자(gate)와 DB(gate)를 만들어 --
초기설치( https://policy.glitter.kr/qa_php/gn5ist-error-1.png )를 시도하였느나. ~~
BD를 읽지 못( https://policy.glitter.kr/qa_php/gn5ist-error-2.png ) 합니다.
♣ '그누보드5를 안정적이고 완전하게 사용하려면 GD 라이브러리를 설치하고 활성화하는 것이 매우 중요하다.'고 합니다.
♣ GD 라이브러리를 정상적으로 작동시키기 위해 아래의 파일들이 반드시 필요합니다.
♣ 아레의 파일들을 다운 받을 수 있는 Link가 필요한데 - 링크를 찾지 못 하고 있습니다.
☆ 저의 localhost는 apt-get, apk 패키지를 사용할 수 없어서, 직접 다운 받아 설치해야 할 파일들입니다.
♧ php7.4-gd_7.4.21.ipk
♧ php7.4-mysql_7.4.21.ipk
♧ php7.4-pdo_7.4.21.ipk
♧ php7.4-pdo-mysql_7.4.21.ipk
♣ 할만 한 구글링(그누보드 Q&A 검색 등등)은 시도하였으나, 해결하지 못 하고 있습니다.
♣ 경험하지 않으신, 성의 없는 답변 지양하시고 우문현답을 주시기 바랍니다. - 계발환경이 아닙니다.
※ 컨테이너 구성 개요 ※
!. MySQL의 도커 이미지을 만들지 않고 localhost의 mysql db 사용.
!. 그누보드 5와 6의 컨테이너가 호스트(MySQL DB)의 네트워크와 동일한 네트워크 스택 을 공유하게 구성.
◐ 그누보드6.0.8 컨테이너 구성 파일 - 정상 실서비스 중 - https://m.glitter.kr
Dockerfile
# Use Python base image
FROM python:3.12.4
# Set the working directory
WORKDIR /con/m_glitter
# Copy the requirements file into the container
COPY requirements.txt .
# Install dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code into the container
COPY . .
# Expose the port the app runs on
EXPOSE 8001
# Command to run the application
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8001"]
docker-compose.yml
version: '3.8'
services:
m_glitter:
container_name: con_m_glitter
build:
context: .
network_mode: host
volumes:
- /mnt/VOL1/mglitter:/con/m_glitter
- /mnt/VOL1/hwi:/mnt/VOL1/hwi
requirements.txt
aiohttp==3.9.5
annotated-types>=0.5.0
anyio==3.7.1
Authlib==1.3.1
bcrypt>=4.0.1
bleach>=6.0.0
cachetools==5.3.2
certifi==2023.7.22
cffi>=1.15.1
click==8.1.7
contourpy>=1.0.6
cryptography==42.0.4
cycler>=0.11.0
dnspython==2.6.1
email_validator==2.1.1
exceptiongroup==1.1.3
fastapi>=0.111.0
fonttools>=4.38.0
greenlet==3.0.1
h11==0.14.0
httpcore>=0.17.3
httpx>=0.24.1
idna==3.7
importlib-resources>=5.12.0
itsdangerous==2.1.2
Jinja2==3.1.4
kiwisolver==1.4.5
MarkupSafe==2.1.3
matplotlib>=3.5.3
numpy>=1.21.6
packaging==23.2
pandas>=1.3.5
passlib==1.7.4
Pillow>=9.5.0
plotly==5.18.0
pycparser==2.21
pydantic==2.4.2
pydantic-core==2.10.1
pydantic-settings==2.0.3
pyopenssl>=23.3.0
pyparsing==3.1.1
python-dateutil==2.8.2
python-dotenv>=0.21.1
python-multipart==0.0.9
pytz==2023.3.post1
six==1.16.0
sniffio==1.3.0
SQLAlchemy==2.0.23
sse-starlette>=0.10.3
starlette>=0.27.0
tenacity==8.2.3
testresources>=2.0.1
typing-extensions>=4.7.1
tzdata==2023.3
ua-parser==0.18.0
user-agents==2.2.0
uvicorn>=0.22.0
webencodings==0.5.1
zipp>=3.15.0
filelock==3.12.2
APScheduler>=3.10.0
pymysql==1.1.1
psycopg2-binary==2.9.9
lxml==5.1.0
PyJWT==2.8.0
◐ 그누보드(5.5.13 반응형웹) 컨테이너 구성 파일 -
Dockerfile
# Base image
FROM php:7.4.21-cli
# Set working directory
WORKDIR /con/glitter
# Copy the necessary files
COPY php.ini /con/glitter/php.ini
# Install necessary PHP extensions
RUN docker-php-ext-install mysqli pdo pdo_mysql
# Command to run the application
CMD ["php", "-S", "0.0.0.0:8000", "-t", "/con/glitter"]
docker-compose.yml
version: '3.8'
services:
glitter:
container_name: con_glitter
build:
context: .
dockerfile: Dockerfile
network_mode: host
volumes:
- /mnt/VOL1/glitter:/con/glitter
- /mnt/VOL1/hwi:/mnt/VOL1/hwi
php.ini
extension=gd
extension=mysqli
extension=pdo_mysql
expose_php = Off
allow_url_fopen = Off
DISPLAY_ERRORS =Off
display_startup_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
register_globals = Off
upload_max_filesize = 1024M
post_max_size = 1024M
max_file_uploads = 4
[MySQLi]
mysqli.default_socket = /var/lib/mysql/mysql.sock
[Pdo_mysql]
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
◐ 서버 디렉터리
/mnt/VOL1/Docker/ ( 도커/컨테이너 디렉터리 )
│ ├── docker/ ( 도커 S/W )
│ │ ├── buildkit/
│ │ ├── containerd/
│ │ ├── containers/
│ │ ├── image/
│ │ ├── network/
│ │ ├── overlay2/
│ │ ├── plugins/
│ │ ├── runtimes/
│ │ ├── swarm/
│ │ ├── tmp/
│ │ ├── trust/
│ │ └── volumes/
│ │
│ ├── glitter/ ( 그누보드5 컨테이너 )
│ │ ├── Dockerfile
│ │ ├── docker-compose.yml
│ │ └── php.ini
│ │
│ ├── m_glitter/ ( 그누보드6 컨테이너 )
│ │ ├── Dockerfile
│ │ ├── docker-compose.yml
│ │ └── requirements.txt
│
/mnt/VOL1/glitter/
│ ├── gate/ ( 그누보드5 디렉터리 )
│ │ ├── adm/
│ │ ├── bbs/
│ │ ├── theme/
│ │ ├── _common.php
│ │ ├── common.php
│ │ ├── config.php
│ │ └── index.php
│ ├── style.css
│ ├── index.php
│ └── robots.txt
│
/mnt/VOL1/mglitter/ ( 그누보드6 디렉터리 )
│ ├── .env
│ ├── api/
│ ├── core/
│ ├── lib/
│ ├── service/
│ ├── venv/
│ ├── . . .
│ └── main.py
│
/mnt/VOL1/MySQL/ ( MySQL DB 디렉터리 )
│
/mnt/VOL1/hwi/ ( static 파일 디렉터리 )
│ ├── gimg/
│ │ ├── img/
│ │ └── favicon/
│ ├── css/
│ │ ├── glitter.css
│ │ ├── m.glitter_default.css
│ │ ├── . . .
│ │ └── policy.glitter_default.css
│ ├── qa_php/
│ ├── robots.txt
│ ├── m.robots.txt
│ ├── policy.robots.txt
│ ├── . . .
│ ├── glitter_sitemap.xml
│ ├── m.glitter_sitemap.xml
│ ├── policy.glitter_sitemap.xml
│ └── site_map.xml
│
◐ 홈서버(Localhost) 정보
root@HumanpcNAS:~# cat /etc/*release
ID=nas200
NAME="ipTIME NAS200"
VERSION="1.0.60"
VERSION_ID=1.0.60
PRETTY_NAME="ipTIME NAS200 1.0.60"