๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

2022-11-28-TIL

๐Ÿ“ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉโ€‹

  • python ์ปดํ”„๋ฆฌํ—จ์…˜
  • ํŒŒ์ด์ฌ ๋ฌธ๋ฒ• ์ค‘ ๊ฐ€์žฅ ์ดํ•ด ์•ˆ๊ฐ€๋Š” ๋ฌธ๋ฒ•. ์ด๊ฒŒ ์ •๋ง ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ๋ฌธ๋ฒ•์ธ๊ฐ€ ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ๋ฌธ๋ฒ•
  • ๋”•์…”๋„ˆ๋ฆฌ ์ปดํ”„๋ฆฌํ—จ์…˜

๋„์ปคโ€‹

  • ๋‹จ์ˆœํ•œ ์•ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ํŒŒ์ด์ฌ ํ”Œ๋ผ์Šคํฌ

๋ฐฐํฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ?

  • ํŒŒ์ด์ฌ ์˜์กด์„ฑ
  • ์•ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜์กด์„ฑ
  • ํ”Œ๋ผ์Šคํฌ ๋ช…๋ น์–ด ๋“ฑ

์ˆ˜๋™ ๋ฐฐํฌโ€‹

docker run -it ubuntu bash
  • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ bash ๋ช…๋ น์–ด ํ„ฐ๋ฏธ๋„ ์ž…๋ ฅ๊ฐ’์„ ์ทจํ•˜๊ธฐ
$ apt-get update
$ apt-get install -y python
$ apt-get install python-pip
$ pip install flask
$ cat > /opt/app.py
$ FLASK_APP=app.py flask run --host=0.0.0.0
  • ์•ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

๋„์ปคํ™” ํ•˜๊ธฐโ€‹

  • ๋ฉ”๋ชจ์žฅ์„ ์ผœ์„œ ์‹คํ–‰ํ–ˆ๋˜ ์ ˆ์ฐจ๋“ค์„ ์ „๋ถ€ ์ ๊ธฐ
apt-get update
apt-get install -y python3
apt-get install python3-pip
pip install flask
Create/Copy application code to /opt/app.py

FLASK_APP=/opt/app.py flask run --host=0.0.0.0

mkdir my-simple-webapp
cd my-simple-webapp
cat > Dockerfile
FROM ubuntu

RUN apt-get update
RUN apt-get install -y python3 python3-pip
RUN pip install flask

COPY app.py /opt/app.py

ENTRYPOINT FLASK_APP=/opt/app.py flask run --host=0.0.0.0
  • dockerfile
cat > app.py

import os
from flask import Flask
app = Flask(__name__)

@app.route("/")
def main():
return "Welcome!"

@app.route('/how-are-you')
def hello():
return 'I am good, how about you?'

if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)

  • app.py ๋ณต์‚ฌ
docker build .
  • docker build ํ•˜๊ธฐ
docker build . -t my-simple-webapp
  • -t ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์ด๋ฏธ์ง€์— ์ด๋ฆ„ ๋ถ™์ด๊ธฐ
  • ๋„์ปค๋Š” ๋ชจ๋“  ๊ณ„์ธต์„ ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค. ํ•œ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ ์‹คํ–‰์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†๋‹ค๋ฉด ๋น ๋ฅด๋‹ค.
docker images
docker run my-simple-webapp
  • ํฌํŠธ ๋งคํ•‘ ํ•˜๋ฉด ๋œ๋‹ค.
docker push my-simple-webapp
  • ๋„์ปค ํ—ˆ๋ธŒ์— ์˜ฌ๋ฆฌ๊ธฐ
  • ๊ณ„์ • ๋ช…์„ ์•ˆ๋ถ™์ด๋ฉด ์•ˆ์˜ฌ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€์— ๊ณ„์ •๋ช… ๊นŒ์ง€ ๋ถ™์—ฌ์•ผ๋จ
docker build . -t jihunheo/my-simple-webapp
docker push jihunheo/my-simple-webapp
  • ๋„์ปค ์ด๋ฏธ์ง€ ํ‘ธ์‹œ์˜ ๊ฒฝ์šฐ ๋ช…๋ น์–ด๋งŒ ํ‘ธ์‹œ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ.. ์ด๋ฏธ์ง€ ์ž์ฒด๋ฅผ ์ „๋ถ€ (๋‹จ๊ณ„๋ณ„) ?? ํ‘ธ์‹œ ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ž„.
    • ์šฉ๋Ÿ‰์ด ์ƒ๊ฐ๋ณด๋‹ค ํฌ๋‹ค.
    • ๊ฐ๊ฐ์˜ ์Šคํƒญ๋ณ„ ์ด๋ฏธ์ง€๋ฅผ ์ „๋ถ€๋‹ค ํ‘ธ์‹œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.
  • ๊ทธ ์‹œ์ ์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€๊ฐ€ ๊ทธ๋ƒฅ ํ†ต์งœ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ตฌ์กฐ๋กœ ๋ณด์ธ๋‹ค??