2017-01-11 1 views
-2

Docker와 함께 docker 프로젝트를 설치했습니다.이 컨테이너에는 django 서버 하나, postgres 서버 하나가 있습니다. 이 프로젝트를 위해 bash 스크립트와 perl 스크립트를 실행하는 것과 같은 다른 작업을 수행 할 수 있기를 원합니다. 예를 들어 bash 스크립트를 사용하여 라이브 사이트에서 데이터베이스 덤프를 자동으로 다운로드하고 복원해야합니다. 각 bash 스크립트에 대해 새로운 Docker 이미지를 설정합니까? 또는 우분투 컨테이너를 설치하고이를 통해 bash 스크립트를 실행해야합니까? Docker - Windows 호스트에서 bash 스크립트 실행하기

을 heres Dockerfile

:

FROM python:3.5 

ENV PYTHONBUFFERED 1 
ENV APPLICATION_ROOT /app/ 
ENV APP_ENVIRONMENT L 
COMPOSE_CONVERT_WINDOWS_PATHS=1 

RUN mkdir -p $APPLICATION_ROOT 
WORKDIR $APPLICATION_ROOT 
ADD requirements.txt $APPLICATION_ROOT 
RUN pip install --upgrade pip 
RUN pip install -r requirements.txt 
ADD . $APPLICATION_ROOT 

그리고 고정 표시기-작성 파일 :

web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
     - .:/app 
    ports: 
     - "8998:8998" 
    links: 
     - db 

db: 
    image: postgres:9.4 
    environment: 
     APP_ENVIRONMENT: L 
     POSTGRES_USER: postgres 
     POSTGRES_PASSWORD: root 
     POSTGRES_DB: mydb 

내가 그렇게 아직 일을하는 가장 좋은 방법을 모르는 도커에 새로운 해요. 어디에서 bash 스크립트와 새로운 docker 파일을 넣을 수 있습니까?이 프로젝트에이 링크를 연결하면 프로젝트가 실행될 때마다 스크립트를 실행할 수 있습니다. 이 작업을 수행 할 수있는 몇 가지 방법이 있습니다. 단지 bash 컨테이너를 만들고 스크립트를 실행하는 데 사용할 수 있습니다. 또는 내가 필요로하는 모든 스크립트를 담고있는 bash 이미지로 컨테이너를 만들 수도 있고, 각각의 컨테이너를 만들 수도 있습니다. perl 또는 awk 또는 expect을이 bash 스크립트와 함께 실행해야 할 수도 있습니다.이 경우 각 컨테이너에 대한 이미지를 가져올 수 있습니까?

답변

1

당신은 잘못 몇 가지 개념을 가지고 :

  1. 에만로드 컨테이너 당 하나 개의 이미지. 컨테이너는 해당 이미지의 인스턴스를 실행합니다. 컨테이너는 포함 된 가상 머신이고 이미지는 OS라고 생각하십시오.
  2. 스크립트 당 하나의 컨테이너가 필요하지 않습니다. 컨테이너가 포함되어 있습니다. 그 중 하나에서 스크립트를 실행하면 다른 컨테이너에 영향을 미치지 않습니다. 당신은 물론 많은 우분투 이미지를 가질 수 있지만, 단지 당신이하고 싶은 것을 이해하지 못합니다. 컨테이너를 작업 (데이터베이스 실행, 웹 페이지 호스팅 등)을 수행해야하는 서비스라고 생각하십시오. 그것은 일하기 위해 필요한 모든 것을 내부에 가지고 있어야합니다.
  3. 컨테이너에서 스크립트를 실행해야하는 경우 먼저 Dockerfile에서 ADD 또는 COPY을 사용하여 컨테이너에 스크립트를 제공 한 다음 CMD을 사용하여 스크립트를 실행해야합니다. 그러면 컨테이너 내부에서 실행되므로 상태에 영향을 미칩니다. 이 명령을 사용하는 방법에 대한 자세한 내용은 Dockerfile reference을 확인하십시오.
+0

또한 전체 컨테이너 아키텍처를 이해하는 데 문제가있는 것 같기 때문에 시작 설명서를 살펴 보는 것이 좋습니다. –

관련 문제