Python (40)

반응형

 

도커 컴포즈

 

: 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구

여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 사용함 => 원래라면 각 컨테이너를 하나씩 생성해야 한다.

 

 

 

1

 

1. 프로젝트 생성

 

2

 

2. 폴더 앞에 아래 파일들 붙여 넣기 (압축 풀어야 함)

 

3

 

3. DOCKER_COMPOSE 폴더가 있는 위치로 이동 > 위의 창에 cmd 입력하여 cmd 창으로 이동

 

4

 

4. cmd창에 입력

 

docker-compose up -d --build

 

 

5

 

5. Containers 추가된 것 확인

 

6

 

6. Images 추가된 것을 확인

 

7

 

7. localhost 입력하여 실행 코드 확인

 

 

 

테스트 파일

 

 

 

 

1. 폴더가 있는 위치에서 cmd 입력하여 cmd 경로 이동

 

2. 아래의 코드 입력해서 docker 실행

docker-compose up -d --build

 

3. Containers 추가된 것 확인

3

 

4. 실행 화면 확인

4

 

 

반응형
반응형

 

과거의 파일 이용하여 수정하기

 

=> 포트 번호만 수정함

 

 

daoemp.py

import pymysql

class Daoemp:
    def __init__(self):
        self.con = pymysql.connect(host='localhost', port=3306, user='root',
                              password='python', db='python', charset='utf8')

        self.cur = self.con.cursor(pymysql.cursors.DictCursor)
    
    def selectList(self):
        sql = f"""
            SELECT
                e_id,
                e_name,
                gen,
                addr
            FROM
                emp
        """
        self.cur.execute(sql)
        list = self.cur.fetchall()
        return list
    
    def select(self,e_id):
        sql = f"""
            SELECT
                e_id,
                e_name,
                gen,
                addr
            FROM
                emp
            WHERE
                e_id = '{e_id}'
        """
        self.cur.execute(sql)
        # list = self.cur.fetchall()
        list = self.cur.fetchone()
        return list
        # return list[0] #vo 방식으로 리턴해주기에 권장함

    def insert(self,e_id,e_name,gen,addr):
        sql = f"""
            INSERT INTO 
                emp (e_id, e_name, gen, addr)
            VALUES ('{e_id}','{e_name}','{gen}','{addr}')
        """
        cnt = self.cur.execute(sql)
        self.con.commit() #꼭 해야함
        return cnt
        
    def update(self,e_id,e_name,gen,addr):
        sql = f"""
            UPDATE emp 
            SET
                e_name = '{e_name}',
                gen = '{gen}',
                addr = '{addr}'
            WHERE
                e_id = '{e_id}'
        """
        cnt = self.cur.execute(sql)
        self.con.commit() #꼭 해야함
        return cnt
        
    def delete(self,e_id):
        sql = f"""
            DELETE FROM emp 
            WHERE
                e_id = '{e_id}'
        """
        cnt = self.cur.execute(sql)
        self.con.commit() #꼭 해야함
        return cnt

    def __del__(self):
        self.cur.close()
        self.con.close()
        
if __name__ == '__main__':
    de = Daoemp()
    cnt = de.delete('3')
    print("cnt",cnt)

결과 화면1

 

 

 

+도커 파일

 

 

 

도커 테스트

 

 

docker build -t my-mysql-image .
docker run -d --name my-mysql-container -p 3306:3306 my-mysql-image



docker pull mysql
docker images
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=python -d -p 3306:3306 mysql:latest

 

 

1

 

1. docker_mysql 폴더 오른쪽 마우스 클릭 > Properties 클릭

 

2

 

2. 주소 복사하기

 

3

 

3. cmd 창에서 cd 위치 붙여넣기 > 위의 코드 붙여넣기

 

4

 

4. Docker 실행하여 images 에서 추가된 것 확인

 

 

+ img 확인 방법

상단의 코드 입력

 

 

 

  • 실행 방법
docker run -d -p 5000:5000 flask-app

 

1

 

1. cmd 창에서 위의 코드 입력

 

파일 경로 확인

 

2. 파일 생성

 

Dockerfile

FROM python:3.8-alpine
COPY . /app
WORKDIR /app
RUN pip3 install flask
RUN chmod +x /app/my_flask.py
CMD ["python3", "my_flask.py"]

 

 

my_flask.py

from flask import Flask,request,render_template, redirect, jsonify
from flask.helpers import make_response

app = Flask(__name__)

@app.route('/')
def main():
   return 'Hello Docker'

if __name__ == '__main__':
  app.run(debug=True, port=5000, host='0.0.0.0')

 

3

 

3. 127.0.0.1:5000번으로 진행

 

 

 

MVVM 이용하여 실행하기 (Docker 연결 x)

 

 

 

  • 필수!!

위의 폴더에서 있는 daoemp 파일 열기 > host에 자신의 host 번호 입력 (localhost 입력 시 불가능!)

 

 

 

  • 실행 (마리아DB 사용)

1. 폴더 위치로 cmd 이동

 

2

 

2. 아래 코드 차례대로 cmd에 입력

 

docker build -t flask-app .
docker run -d --name flask-app-container -p 5000:5000  -p 3305:3305 flask-app

 

3

 

3. 크롬 창에 127.0.0.1:5000 입력

 

 

 

MVVM 이용하여 실행하기 (Docker 연결 o)

 

 

  • 실행 (마리아DB 사용)

과거 만들어 놓은 도커 파일을 이용한다.

 

+도커 파일 내용 확인

더보기
# Dockerfile

# MySQL 이미지를 기반으로 이미지 생성
FROM mysql:latest

# MySQL 설정
ENV MYSQL_ROOT_PASSWORD=python
#ENV MYSQL_DATABASE=mysql
#ENV MYSQL_USER=root
#ENV MYSQL_PASSWORD=python

# 포트 설정 (기본 MySQL 포트는 3306)
EXPOSE 3306

 

 

 

1. docker_mysql의 폴더 위치로 cmd 이동

 

docker build -t my-mysql-image .
docker run -d --name my-mysql-container -p 3306:3306 my-mysql-image

 

2. cmd 창에 위의 코드 입력

 

3

 

3. Containers에서 실행되는 것들 확인

 

4

 

4. HeidiSQL에서 데이터 베이스 python 생성 > emp 테이블 생성 > 열 추가 > 저장

 

5

 

5. 데이터 삽입

 

4

 

4. localhost:5000 실행하여 결과 확인

 

 

반응형
반응형

 

가상머신과 도커 비교

 

 

 

도커는 가볍고 속도도 괜찮기에 사용하기 좋음

 

 

 

설치 전 설정

 

1

 

1. 제어판 > 프로그램 클릭

 

2

 

2. 프로그램 및 기능 클릭

 

3

 

3. Windows 기능 켜기/끄기 클릭

 

4

 

4. Hyper-V 선택 > 확인 클릭

 

5

 

5. 다시 시작 클릭

 

6. WSL 및 Docker 다운로드 하기

 

 

 

Docker 설치

 

 

1

 

1. 더블 클릭 > OK로 설치

 

2

 

2. Close and restart 클릭

 

3

 

3. Accept 클릭

 

4

 

4. 클릭 후 Finish 클릭

 

5

 

5. Sign in 클릭

 

6

 

6. docker 로그인 또는 회원가입

 

로그인 화면

 

 

cmd창에서 docker -v로 설치된 것 확인

 

 

7

 

7. cmd 창에서 docker pull mysql 입력

 

 

 

WSL 설치

 

 

1

 

1. 더블 클릭

 

2

 

2. Next 클릭

 

3

 

3. Finish 클릭

 

 

 

mysql 설치

 

 

1

 

1. 아래의 코드 입력

 

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=python -d -p 3306:3306 mysql:latest

 

 

2

 

2. 추가된 것을 확인

 

3

 

3. 실행

 

4

 

4. 세션 신규로 추가 > 위에 기입한 비밀번호(python) 입력  > 저장 > 열기

 

열린 것 확인

 

 

 

데이터베이스 생성 및 테이블 생성

 

 

1

 

1. 오른쪽 마우스 클릭 > 새로 생성 클릭 > 데이터베이스 클릭

 

2

 

2. 이름 기입 > 조합 선택 > 확인

 

3

 

3. 데이터 베이스에서 오른쪽 마우스 클릭 > 새로 생성 > 테이블 클릭

 

4

 

4. 테이블 생성

 

5

 

5. 데이터 기입

 

 

반응형
1 2 3 4 5 6 7 ··· 14