반응형
1) docker를 이용해 node.js 서버 구동하기
- centOS 에 simpleweb.js 작성하기
- nano 로 작성함
//simpleweb.js 파일을 편집
const http = require('http');
http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
}).listen(7777);
docker run --privileged -d -p 7777:7777 -v /root:/root --name nodeweb node:lts-alpine node /root/simpleweb.js
- 1) docker : 도커
- 2) run : 이미지로 부터 새로운 인스턴스를 만든다.
- 3) --privileged : 도커가 내 시스템에 접근해도 된다. - 보안적으로 허용해줘 (단, 레드햇 계열 리눅스들에만 필요!!!! centOS, rocky)
- 4) -d : 백그라운드
- 5) -p : 포트 연결
- 6) -v : 도커 볼륨 (디렉터리 연결)
- 7) --name : 별칭
- 8) 이미지 이름
- 9) node /root/simpleweb.js (도커 내에서 실행할 명령)
2) docker를 이용해 MariaDB 서버 구동하기
- mariaDB 이미지 받기 : docker pull mariadb
- docker run --privileged -d -p 3306:3306 -v /var/kosa/mariadb:/var/lib/mysql --name mariadb -e MYSQL_ROOT_PASSWORD=admin mariadb
- centOS의 /var/kosa/mariadb 들어가서 파일들이 생겨났을 경우 서버가 구동되고 있다는것임
- mariadb에 접속하기 : docker exec -it mariadb /bin/bash
- 1) exec : 명령을 실행
- 2) -it : 나한테 터미널 주세요
- 3) mariadb : 인스턴스 별칭
- 4) /bin/bash : 인스턴스 안에 있는 명령 (실행할 내용)
3) 윈도우에 MariaDB client 설치 후 접속하기
- mysql tools 설치 (command line) : https://mariadb.com/products/community-server/
- 설치 후 cmd에 mysql --version 입력
- 만일 설치했는데도 mysql 명령이 동작안하면 => cmd+R > sysdm.cpl -> 고급옵션 (환경변수) 설정하기
- 윈도우 -> CentOS의 MariaDB 접속
4) 학점정보를 sqlite로 저장한 것을 mariadb로 변경 후 동작하도록 수정하기
0) python에서 mariadb 사용하기 위한 라이브러리 -> pip install mariadb
1) mariadb 연결위한 ip, port, 계정
2) 연결하는 방법
3) SQL 일부 변경
1) mariadb에 연결할 때 필요한 것이 무엇인가?
- CentOS에서 docker start mariadb 로 실행시켜두기
- mariadb root 계정으로 접속하기
- mysql -h 192.168.56.104 -u root -p 혹은 (root/admin) => 윈도우에서 mariaDB client실행 사용 가능한 명령어
- docker exec -it mariadb /bin/bash => centOS에서 mariaDB 실행
- kosa database 만든 후 권한 부여해주기
- create database kosa => kosa database 생성
- grant all privileges on kosa.* to 'kosa'@'%' identified by 'kosa1234' => 계정/권한 부여
- 윈도우 cmd에서 kosa 계정으로 접속하기
- mysql -h 192.168.56.45 -u kosa -p (kosa/kosa1234)
2) CSV를 maridb에 insert하는 코드로 수정 후 실행하기 (수정할 부분만 작성)
insert_CSV.py 수정 전
import sqlite3
conn = sqlite3.connect('./data/grade.db')
insert_CSV.py 수정 후
import mariadb
# MariaDB에 연결
conn = mariadb.connect(
host="192.168.56.104", # 호스트 이름 (예: "localhost")
user="kosa", # 사용자 이름
password="kosa1234", # 비밀번호
database="kosa" # 데이터베이스 이름
)
insert_CSV.py 수정 전
c.execute('''CREATE TABLE IF NOT EXISTS students
(ID TEXT PRIMARY KEY NOT NULL,
KOR INT NOT NULL,
MATH INT NOT NULL,
GRADE TEXT NOT NULL)''')
insert_CSV.py 수정 후
c.execute('''CREATE TABLE IF NOT EXISTS students (
ID INT PRIMARY KEY NOT NULL,
KOR INT NOT NULL,
MATH INT NOT NULL,
GRADE varchar(4))''')
show_CSV.py 수정 전
import sqlite3
def display_table():
conn = sqlite3.connect('./data/grade.db')
show_CSV.py 수정 후
import mariadb
def display_table():
conn = mariadb.connect(
host="192.168.56.104", # 호스트 이름 (예: "localhost")
user="kosa", # 사용자 이름
password="kosa1234", # 비밀번호
database="kosa" # 데이터베이스 이름
)
3) 웹화면에도 출력해보자~ (flask 이용)
webGrade.py
# import flask
# 필요한 라이브러리 가져오기
# import sqlite3
import mariadb
from flask import Flask, render_template
# Flask 앱 초기화
app = Flask(__name__)
# 루트 경로("/") 정의
@app.route('/')
def display_table():
# 데이터베이스 연결 및 데이터 조회
# conn = sqlite3.connect('./data/grade.db')
conn = mariadb.connect(
host="192.168.56.104", # 호스트 이름 (예: "localhost")
user="kosa", # 사용자 이름
password="kosa1234", # 비밀번호
database="kosa" # 데이터베이스 이름
)
c = conn.cursor()
c.execute("SELECT * FROM students WHERE GRADE = 'A'")
rows = c.fetchall()
conn.close()
print(rows)
# 데이터를 웹 페이지로 전달
return render_template('table.html', rows=rows)
# 애플리케이션 실행
if __name__ == '__main__':
app.run()
반응형
'docker' 카테고리의 다른 글
[kosa20241120] docker를 활용한 tomcat 실행 실습 (0) | 2024.11.20 |
---|---|
[kosa20241120] flask로 간단히 웹서버를 구동하고 화면에 출력해보자~ (1) | 2024.11.20 |