Docker 초보자 | ptyhon 서버를 시작하여 로컬에서 접근 | 공식 강좌에서 part2
Docker file 만들기
로컬 디렉토리에서 Docker file을 만듭니다.
Dockerfile# ベースとなるイメージの指定
# 自動的に docker hub からダウンロード出来る
FROM python:2.7-slim
# コンテナのワークディレクトリの指定
WORKDIR /app
# ローカルのカレントディレクトリの中身を全て コンテナのワークディレクトリにコピーする
# コンテナ実行時ではなく、イメージ作成時にコピーされる
ADD . /app
# python スクリプトでモジュールをインストールするための処理
RUN pip install -r requirements.txt
EXPOSE 80
# 環境変数の指定
# Docker コンテナで export NAME=World した状態になる
ENV NAME World
# コンテナ実行時に走らせるコマンドの指定
# この例では $ python app.py というコマンドが走る
CMD ["python", "app.py"]
스크립트 생성
같은 디렉터리에 ptyhon 스크립트를 만듭니다.
app.pyfrom flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr('counter')
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv('NAME', "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
requirements.txtFlask
Redis
이미지 만들기
Docker file을 기반으로 이름을 붙여 이미지를 만든다.docker build -t python-server .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python-server latest c3907742b08f 7 seconds ago 195 MB
용기의 제작
지정한 포트 운행 컨테이너.
이 예에서 로컬 4000번에서 도커의 80번을 방문할 수 있습니다.docker run -p 4000:80 python-server
로컬 액세스
http://localhost:4000/가 나오면 성공합니다.
(손에 왜 리디스가 움직이지 않았는지...나중에 조사)
서버 접속
용기를 실행하고 있다면, 도커 서버에 바로 들어갈 수 있습니다.
프로세스 ID 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7b95a8a2a22 python-server "python app.py" About a minute ago Up About a minute 0.0.0.0:4000->80/tcp examole-server
exec
컨테이너 IDdocker exec
를 지정합니다.
예:docker exec -it c7b95a8a2a22 /bin/bash
확인 파일
docker 용기에 파일이 펼쳐져 있음을 알 수 있습니다.$ ls
Dockerfile app.py requirements.txt
환경 변수 확인
Doke rfile에서 설명하는 환경 변수는 export입니다.$ echo $NAME
World
참고 자료
# ベースとなるイメージの指定
# 自動的に docker hub からダウンロード出来る
FROM python:2.7-slim
# コンテナのワークディレクトリの指定
WORKDIR /app
# ローカルのカレントディレクトリの中身を全て コンテナのワークディレクトリにコピーする
# コンテナ実行時ではなく、イメージ作成時にコピーされる
ADD . /app
# python スクリプトでモジュールをインストールするための処理
RUN pip install -r requirements.txt
EXPOSE 80
# 環境変数の指定
# Docker コンテナで export NAME=World した状態になる
ENV NAME World
# コンテナ実行時に走らせるコマンドの指定
# この例では $ python app.py というコマンドが走る
CMD ["python", "app.py"]
같은 디렉터리에 ptyhon 스크립트를 만듭니다.
app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr('counter')
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv('NAME', "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
requirements.txtFlask
Redis
이미지 만들기
Docker file을 기반으로 이름을 붙여 이미지를 만든다.docker build -t python-server .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python-server latest c3907742b08f 7 seconds ago 195 MB
용기의 제작
지정한 포트 운행 컨테이너.
이 예에서 로컬 4000번에서 도커의 80번을 방문할 수 있습니다.docker run -p 4000:80 python-server
로컬 액세스
http://localhost:4000/가 나오면 성공합니다.
(손에 왜 리디스가 움직이지 않았는지...나중에 조사)
서버 접속
용기를 실행하고 있다면, 도커 서버에 바로 들어갈 수 있습니다.
프로세스 ID 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7b95a8a2a22 python-server "python app.py" About a minute ago Up About a minute 0.0.0.0:4000->80/tcp examole-server
exec
컨테이너 IDdocker exec
를 지정합니다.
예:docker exec -it c7b95a8a2a22 /bin/bash
확인 파일
docker 용기에 파일이 펼쳐져 있음을 알 수 있습니다.$ ls
Dockerfile app.py requirements.txt
환경 변수 확인
Doke rfile에서 설명하는 환경 변수는 export입니다.$ echo $NAME
World
참고 자료
docker build -t python-server .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python-server latest c3907742b08f 7 seconds ago 195 MB
지정한 포트 운행 컨테이너.
이 예에서 로컬 4000번에서 도커의 80번을 방문할 수 있습니다.
docker run -p 4000:80 python-server
로컬 액세스
http://localhost:4000/가 나오면 성공합니다.
(손에 왜 리디스가 움직이지 않았는지...나중에 조사)
서버 접속
용기를 실행하고 있다면, 도커 서버에 바로 들어갈 수 있습니다.
프로세스 ID 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7b95a8a2a22 python-server "python app.py" About a minute ago Up About a minute 0.0.0.0:4000->80/tcp examole-server
exec
컨테이너 IDdocker exec
를 지정합니다.
예:docker exec -it c7b95a8a2a22 /bin/bash
확인 파일
docker 용기에 파일이 펼쳐져 있음을 알 수 있습니다.$ ls
Dockerfile app.py requirements.txt
환경 변수 확인
Doke rfile에서 설명하는 환경 변수는 export입니다.$ echo $NAME
World
참고 자료
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7b95a8a2a22 python-server "python app.py" About a minute ago Up About a minute 0.0.0.0:4000->80/tcp examole-server
docker exec -it c7b95a8a2a22 /bin/bash
$ ls
Dockerfile app.py requirements.txt
$ echo $NAME
World
Reference
이 문제에 관하여(Docker 초보자 | ptyhon 서버를 시작하여 로컬에서 접근 | 공식 강좌에서 part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YumaInaura/items/1bf6d76f97d73ae7c804텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)