identidock 라는 새로운 디렉토리를 생성.

identidock 디렉토리 내 app 이라는 디렉토리 생성.

내부에 파이썬 애플리케이션을 생성하여 identidock.py 이름으로 파일을 생성한다.

identidock.py 내에는 Hello World 반환되는 코드가 작성되어있다.


다음의 경로를 확인 할 수 있다.

[root@localhost /]# tree identidock/
identidock/
├── Dockerfile
└── app
    └── identidock.py

1 directory, 2 files


다음은 실행할 컨테이너를 생성한다.

identidock 디렉토리에 Dockerfile 이름을 만들고 아래의 스크립트를 작성한다.

FROM pathon:3.4

RUN pip insall Flask==0.10.1
WORKDIR /app
COPY app /app

CMD ["puthon", "identidock.py"]


이제 애플리케이션을 빌드하고 실행한다.

[root@localhost identidock]# docker build -t identidock .
Sending build context to Docker daemon  3.584kB
Step 1/5 : FROM python:3.4
3.4: Pulling from library/python
4176fe04cefe: Pull complete
...
Digest: sha256:cecd2d9551947e909336493d322fb8b2...
Status: Downloaded newer image for python:3.4
 ---> c0e06f0ff7e0
Step 2/5 : RUN pip install Flask==0.10.1
 ---> Running in 11498a2b5273
Collecting Flask==0.10.1
  Downloading Flask-0.10.1.tar.gz (544kB)
...
Successfully built Flask itsdangerous MarkupSafe
...
Removing intermediate container 11498a2b5273
 ---> bb7e2f899714
Step 3/5 : WORKDIR /app
Removing intermediate container ec4a88a27710
 ---> ffca0c21b1f2
Step 4/5 : COPY app /app
 ---> 30ae961f3fff
Step 5/5 : CMD ["python", "identidock.py"]
 ---> Running in 59f5f5e99458
Removing intermediate container 59f5f5e99458
 ---> 1069b3ccf367
Successfully built 1069b3ccf367
Successfully tagged identidock:latest


[root@localhost identidock]# docker run -d -p 5000:5000 identidock
69dc6c8664aa82ddfdd54756b6a471f81a072eb13345bd7...

여기에서 -d 를 사용하여 백그라운드에서 실행되도록 설정. 그리고

-p 5000:5000 포워딩을 하였다.


다음과 같이 테스트를 하게 되면 파이썬 내 애플리케이션에 반환된 Hello World 값을 확인 할 수 있다.

 


매번 수정할 때마다 이미지를 리빌드하고 컨테이너를 재시작해야 한다.?

호스트의 소스 코드 폴더를 컨테이너 내부의 소스 코드 폴더 위에 바이드마운트(bind mount) 시킬 수 있다.

코드 디렉토리를 /app 에 마운트한 새로운 컨테이너를 만들기 전, 아래 코드를 실행한다.




  • No labels