2023. 9. 18. 22:58ㆍ컴퓨터
docker라는 가상환경 안에서 컨테이너를 만들고 서버를 띄우는 과정에서 dockerfile, docker-compose.yml을 통해 해당 과정을 자동화하는 방법을 배웠다. 개인 서버가 아닌 대량의 서버를 한번에 관리할 때 도움이 될 것 같다.
하지만 dockerfile과 docker-compose.yml코드를 실행하는 과정 중 취약, 악성코드나 잘못되 포트가 연결되어 있을 때 보안 상 허점이 생길 수 있기 때문에 해당 파일의 구조와 서버가 만들어지는 과정을 자세히 알아놓아야 할 것 같다.
docker과 웹 frame에 아직 익숙하지 않아서 오늘은 만들어진 코드를 기준으로 과정을 살펴보고
다음 포스팅에서 도커파일해석과 서버프로그래밍에 대한 간단한 공부를 해 볼 예정이다.
우선 Flask frame에서 웹 서버를 만드는 방법을 참고합니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker!'
if __name__ =='__main__':
app.run(debug=True, host = '0.0.0.0', port = 8000)
위의 flask 예시 파일을 통해 파이썬 언어로 웹서버가 만들어는 것을 살펴보았습니다. 해당 파일에 html을 추가하여 웹을 구축하기는 힘들어 보이니 아마 flask의 다른 모듈을 사용하여 웹서버를 구축하는 것 같은데....이야기가 산으로 가는 것 같으므로(배워야 할게 진짜 많네요)오늘은 docker에서 flask 웹 애플리케이션을 만드는 것에 다시 집중하겠습니다!
1. dockerfile로 flask 이미지 빌드하기
*dockerfile 작성 방법은 웹사이트를 참고했습니다.
추가 웹사이트: https://docs.docker.com/engine/reference/builder/#from
FROM : 언어, version
WORKDIR : 작업장소, 경로
COPY : 호스트에서 이미지 파일 복사하여 추가
RUN : 이미지를 지정하면서 실행할 명령 지정
ENTRYPOINT : 컨테이너 어플 지정 ( 컨테이너 시작 시 실행할 명령어 )
EXPOSE : 컨테이너의 포트 지정
ADD : 이미지 생성 시 파일 추가
CMD : 컨테이너 어플 지정 (컨테이너 시작 시 명령어 지정)
docker build -t <image> -f ./Dockerfile
2. docker container 실행하기
docker run -d --name <container> -p <port:port> <image>
3. docker-compose.yml로 2개의 flask container (flask_app_1, flask_app_2) 만들기
참고 웹사이트: Microsoft docker-compose.yml을 사용하여 다중 애플리케이션 정의
docker-compose.yml을 사용하여 다중 컨테이너 애플리케이션 정의 - .NET
docker-compose.yml을 사용하여 다중 컨테이너 애플리케이션에서 마이크로 서비스 컴퍼지션을 지정하는 방법입니다.
learn.microsoft.com
참고 웹사이트: https://github.com/compose-spec/compose-spec/blob/master/spec.md
여러 attribute이 있었지만 아래 yml파일을 작성할 때는 build(context, dockerfile), ports, volume을 사용했습니다.
dockerfile은 위에서 사용한 dockerfile을 다시 사용했습니다.
'컴퓨터' 카테고리의 다른 글
docker 컨테이너 내부에서 동작하기 (Node.js) 사용 (0) | 2023.09.18 |
---|---|
SVM(Support Vector Machine) (0) | 2023.09.08 |
의사결정 트리 (0) | 2023.09.08 |
블록체인기술이란? (0) | 2023.08.25 |
우분투 리눅스에서 Samba를 통해 파일 공유 받기 (0) | 2023.08.22 |