2017-11-28 13 views
1

나는 docker를 처음 사용하기 때문에 이것은 매우 기본적인 것처럼 보일 수 있습니다.docker-compose : 즉시 파일 변경 내용을 보는 방법 (개발 중일 때)

나는 컨테이너의 새로운 웹 프로젝트 ontop을 개발하기로 결정했다. 물론 나는 도커에 대해 생각했다. 튜토리얼을 끝내고 Dockerfiles 등을 읽은 후, 나는 docker-compose로 가기로 결정했다.

하나는 개발 용이고 하나는 제작 용이고 다른 하나는 작성 용 파일입니다. 이제는 세 가지 서비스를 사용하여 기본 php/mysql/redis 애플리케이션을 조율했습니다. 주요 응용 프로그램은 PHP 기반이며 프로젝트 src에 유지 관리됩니다. Mysql과 Redis는 단순히 기본 이미지로 구성되며 비즈니스 로직을 필요로하지 않습니다.

나는 용기를 구축하고

빌드를 가져올 수 있습니다

docker-compose -f compose-Development.yml build 

까지 : 기본 응용 프로그램 컨테이너에

docker-compose -f compose-Development.yml up 

많은 파일이 꿀꺽가 내장되어 있습니다 (템플릿, CSS 등)와 코드는 자바 스크립트와 PHP 모두에 존재합니다.

내 파일을 변경하면 내 앱 상태가 변경되지 않습니다. 컨테이너를 재구성하고 다시 시작해야합니다.

Vagrant에 경험이있는 사람은 개발 과정에서 공유 소스를 찾아 볼 것입니다. 그러나 나는 그것을 어떻게 얻을 것인가?

내 응용 프로그램 (개발) Vagrantfile은 다음과 같습니다

FROM webdevops/php-nginx:7.1 
COPY ./ /app 
COPY docker/etc/ /opt/docker/etc 

# php config... 
RUN ln -sf /opt/docker/etc/php/php.Development.ini /opt/docker/etc/php/php.ini 

WORKDIR /app/ 
EXPOSE 80 

, 작성 파일 :

version: "3" 
services: 

    app: 
    build: 
     context: . 
     dockerfile: Dockerfile.Development 
    links: 
     - mysql 
     - redis 
    volumes: 
     - ./data/fileadmin:/app/public/fileadmin 
     - ./data/uploads:/app/public/uploads 
    env_file: 
     - docker/env/All.yml 
     - docker/env/Development.yml 
    ports: 
     - "80:80" 
    restart: always 

    # Mysql Container 
    mysql: 
    build: 
     context: docker/mysql/ 
     dockerfile: Dockerfile 
    restart: always 
    volumes: 
     - mysql:/var/lib/mysql 
    env_file: 
     - docker/env/All.yml 
     - docker/env/Development.yml 

    # Cache Backend Container 
    redis: 
    build: 
     context: docker/redis/ 
     dockerfile: Dockerfile 
    ports: 
     - "6379:6379" 
    volumes: 
     - redis:/data 
    env_file: 
     - docker/env/All.yml 
     - docker/env/Development.yml 
    restart: always 

volumes: 
    mysql: 
    redis: 

는 지금까지 전에서 덩어리를 복사 할 몇 가지 GitHub의 저장소를 사용했다. 내 설정에도 다른 문제가있을 수 있음을 압니다. 잠시 동안 가장 중요한 문제는 링크 된/복사 된 소스가있는 문제입니다.

종류와 관련, 필립

+0

시도 : 그 옵션을 알고 --no-캐시 – itiic

+0

를 구축하지만, 내 문제를 해결하지 않습니다. 컨테이너를 다시 작성하고 다시 시작하려고하지 않습니다. 코드 한 줄을 변경 했으므로 "live"코드를 작성하고 싶습니다. –

답변

0

"개발/생산 패리티"의 개념이 전면에 많은 혼란을. 이것은 단순히 하나의 구성 만 가질 수 있다는 것을 의미하지 않으며 모든 구성 요소에서 작동합니다. 이 더 가깝고 패리티를 가지며 프로덕션 환경에 매우 근접한 환경을 만들 수 있음을 의미합니다.

무엇이 잘못 되었습니까? 현재 이미지를 작성 중이며 배송 할 준비가되었거나 코드가 있거나 업로드 용으로 볼륨이 준비되어 있습니다. 굉장합니다!

불행히도이 설정은 개발에 적합하지 않습니다. 즉석에서 코드를 편집하려면 로컬 작업 디렉토리를 이미지로 볼륨으로 첨부해야합니다. 이것은 이 아니고이 생산에서 수행됩니다. 그래서 아주 가깝지만 똑같은 설정은 아닙니다.

추가하여 작성 파일의 app 서비스 볼륨 섹션에 다음과 당신이 가서 잘되어야합니다 :

- .:/app 
+0

예, 고맙습니다. 볼륨이가는 길 :-) –