본문 바로가기
DOCKER

[DOCKER] Docker 컨테이너 실습 - Python, Nodejs 파일 컨테이너로 실행

by sum_mit45 2024. 10. 16.
728x90
반응형
10월 15일(화) 수업 중 실습 내용 

 

- Docker를 사용하면 애플리케이션을 쉽게 컨테이너화하여 배포할 수 있다.

- 이번 실습에서는 Python과 Node.js 코드를 Docker를 통해 실행했다.

1. Python 파일 Docker 컨테이너로 실행하기

(1) Python 파일 생성 및 실행

1. Python 파일 작성: nano py_lotto.py

아래의 코드를 이용하여 py_lotto.py 라는 Python 파일을 작성한다. 이 코드는 랜덤으로 로또 번호를 생성하는 코드이다. 

from random import shuffle
from time import sleep

gamenum = input('How many times?')

for i in range(int(gamenum)):
        balls = [x+1 for x in range(45)]
        ret = []
        for j in range(6):
                shuffle(balls)
                number = balls.pop()
                ret.append(number)
        ret.sort()
        print('lotto number[%d]:' %(i+1), end=' ')
        print(ret)
        sleep(1)

 

2. 로컬에서 파일 실행: python3 py_lotto.py

파일을 저장한 후에 로컬에서 먼저 실행해보고, 코드에 문제가 없는지 확인한다. 

 

(2) Python Docker 컨테이너 실행

3. python Docker 컨테이너 실행: docker run --name=python_test -dit -p 8900:8900 python

  • 파이썬 이미지를 기반으로 Docker 컨테이너를 실행한다.
  • name = python_test로 이름을 설정한다.

local 에서 실행한 모습

 

4. 소스 파일을 컨테이너로 복사: docker cp py_lotto.py python_test:/py_lotto.py

  • 로컬에서 작성한 Python 파일(py_lotto.py)을 Docker 컨테이너로 복사한다.

5. Docker 컨테이너에서 Python 파일 실행: docker exec -it python_test python /py_lotto.py

  • Python 파일이 컨테이너로 복사되면, 위 명령어를 활용하여 컨테이너 내부에서 파일을 실행한다.

docker 에서 실행한 모습

 

2. Node.js 애플리케이션 Docker 컨테이너로 실행하기

  • nodejs의 이미지 이름은 node이다. 
  • nodejs에서 web 서버를 만드는 경우 포트를 직접 지정해야 한다.

(1) Node.js 애플리케이션 작성 및 실행

1. Node.js로 웹 서버 만드는 코드 작성: nano nodejs_test.js

let http =  require('http')
let content = function(req, res){
        res.end('Go for it Korea~!!!')
        res.writeHead(200)
}
let web =  http.createServer(content)
web.listen(8002)

 

(2) Docker에서 Node.js 애플리케이션 실행

2. Node.js Docker 컨테이너 실행: docker run -dit --name=nodejs_test -p 8002:8002 node

  • 8002번 포트를 외부에서 접속할 수 있도록 node 컨테이너를 생성

3. Node.js 파일을 컨테이너로 복사: docker cp nodejs_test.js nodejs_test:/nodejs_test.js

4. Docker 컨테이너에서 Node.js 파일 실행: docker exec -it nodejs_test node /nodejs_test.js

 

[실습 화면]

nodejs 컨테이너를 위한 명령어 입력

 

linux 서버에서 확인

 

728x90
반응형