Flask 빌트인 서버 알파인 도커 빌드

1 개요[ | ]

Flask 알파인 도커 빌드
Flask 빌트인 서버 알파인 도커 빌드

2 파일 준비[ | ]

app.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
Dockerfile
FROM python:3.9-alpine
ENV FLASK_APP=app.py
ENV FLASK_ENV=development
ENV FLASK_RUN_PORT=5000
COPY app.py /app/
WORKDIR /app/
RUN pip install flask
CMD ["flask","run","--host=0.0.0.0"]

3 빌드[ | ]

$ docker build -t hello .
Sending build context to Docker daemon  3.072kB
Step 1/8 : FROM python:3.9-alpine
 ---> 56302acacaa7
Step 2/8 : ENV FLASK_APP=app.py
 ---> Using cache
 ---> 2892c672be50
Step 3/8 : ENV FLASK_ENV=development
 ---> Using cache
 ---> 40e14f2ebeb9
Step 4/8 : ENV FLASK_RUN_PORT=5000
 ---> Using cache
 ---> dcbe2f27d561
Step 5/8 : COPY app.py /app/
 ---> 31fc8daabe11
Step 6/8 : WORKDIR /app/
 ---> Running in 8420eda081d1
Removing intermediate container 8420eda081d1
 ---> 15726451ea2d
Step 7/8 : RUN pip install flask
 ---> Running in 2f77edf6fba9
Collecting flask
  Downloading Flask-2.0.1-py3-none-any.whl (94 kB)
Collecting click>=7.1.2
  Downloading click-8.0.1-py3-none-any.whl (97 kB)
Collecting Jinja2>=3.0
  Downloading Jinja2-3.0.1-py3-none-any.whl (133 kB)
Collecting Werkzeug>=2.0
  Downloading Werkzeug-2.0.1-py3-none-any.whl (288 kB)
Collecting itsdangerous>=2.0
  Downloading itsdangerous-2.0.1-py3-none-any.whl (18 kB)
Collecting MarkupSafe>=2.0
  Downloading MarkupSafe-2.0.1.tar.gz (18 kB)
Building wheels for collected packages: MarkupSafe
  Building wheel for MarkupSafe (setup.py): started
  Building wheel for MarkupSafe (setup.py): finished with status 'done'
  Created wheel for MarkupSafe: filename=MarkupSafe-2.0.1-py3-none-any.whl size=9761 sha256=4b03fb2585fe3f3c37c6d0975bd3c0f2f482a6d2ec48a1db195cd44db84230b4
  Stored in directory: /root/.cache/pip/wheels/9f/6d/c8/1f59b07cf85ae842908006ec28f4477f7e4578df72c3eb0e46
Successfully built MarkupSafe
Installing collected packages: MarkupSafe, Werkzeug, Jinja2, itsdangerous, click, flask
Successfully installed Jinja2-3.0.1 MarkupSafe-2.0.1 Werkzeug-2.0.1 click-8.0.1 flask-2.0.1 itsdangerous-2.0.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Removing intermediate container 2f77edf6fba9
 ---> dc9465506d3c
Step 8/8 : CMD ["flask","run","--host=0.0.0.0"]
 ---> Running in 0954e23cbf95
Removing intermediate container 0954e23cbf95
 ---> 1fd2e365470d
Successfully built 1fd2e365470d
Successfully tagged hello:latest

4 실행[ | ]

$ docker run -it --rm hello
 * Serving Flask app 'app.py' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://172.18.0.3:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 117-166-596
^C
$
$ docker run -d -p5000:5000 --name hello hello
0eb4f7f08222e50ad4eb624b45bed268f77d1872e30f524d20a7027b19a1971d
$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                    NAMES
0eb4f7f08222   hello     "flask run --host=0.…"   7 seconds ago   Up 7 seconds   0.0.0.0:5000->5000/tcp   hello
$ curl localhost:5000
<p>Hello, World!</p>

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}