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 에 마운트한 새로운 컨테이너를 만들기 전, 아래 코드를 실행한다.