다중 운영체제가 Docker 개발 환경을 지원하는 제작 방법 [docker-compose편]

7036 단어 DockerMagento2
이 투고는 Magento Advent Calendar 2019의 12일째다.
저번 Docker for Mac의 Volume 문제를 해결했고, 이번에는 다중 OS에 어떻게 대처해야 하는지에 관한 이야기다.
운영체제가 다르면 docker-compose의 설정도 다르고 아무래도 개발자마다 설정이 다르다.
지금은 debug 모드로 시작하고 싶다','이쪽 설정 파일로 시작하고 싶다'등의 상황도 자주 발생한다.
기본적인 docker-compose.yml도 같지만 모든 디테일을 쉽게 편집할 수 있기를 바랍니다.이때 추천하는 방법은...
docker-compose.override.yml 및 env파일입니다!

docker-compose.override.yml


원본docker-compose 명령-f은 여러 옵션을 사용하여 여러 설정 파일을 병합하여 사용할 수 있습니다.
docker-compose -f docker-compose.1.yml -f docker-compose.2.yml -f docker-compose.3.yml [COMMAND]
Multiple Compose files(공식 문서)
그냥... 길게 치는 거 어렵지 않아요?(docker-compose만 14글자...
나 이거 맨날 안 좋아해!
그럼 docker-compose.override.예?
실제로 docker-compose 명령은 읽기docker-compose.ymldocker-compose.override.yml로 기본값입니다.
그러니까!
  • docker-compose.yml를 공통 기준 설정 파일로 설정
  • docker-compose.override.yml 환경별로 변경
  • 이렇게 하면 실행할 때 docker-compose [COMMAND]만 치면 서로 다른 환경에 따라 대응할 수 있습니다!
    예를 들어 사과 2 용기docker-compose.yml를 만들어 봤다.
    docker-compose.yml
    version: "3"
    services:
      apache:
        image: apache:7.3-apache
        volumes:
          - {PASS_TO_PROJECTROOT}:/var/www/html
    
    Linux와 Windows 사용자에게는 이 정도면 충분하죠.
    docker-sync에 더 잘 어울리게 하려고 그럴 때 만들기docker-compose.override.yml.sampledocker-compose.yml.sample
    version: "3"
    services:
      apache:
        volumes:
          - src:/var/www/html
    volumes:
      src:
        external: true
    
    덮어쓰려는 부분만 씁니다.
    git로 하여금 이 Sample 파일을 관리하게 하고, 반대로 .gitignore 미리 추가docker-compose.override.yml합니다.
    그렇다면 docker-sync 개발자docker-compose.override.yml의 이름을 바꾸어 사용해야 한다면 필요한 개발자만 docker-sync를 사용할 수 있겠지!
    저번과 같다에 있습니다.yml를 제작하면docker-compose run --rm apache bash 컨테이너 내에서 기준을 얻는다.
    root@fac0c26e95f7:/var/www/html# time dd if=/dev/zero of=$PWD/benchmark bs=1k count=100000
    100000+0 records in
    100000+0 records out
    102400000 bytes (102 MB, 98 MiB) copied, 0.326605 s, 314 MB/s
    
    real    0m0.329s
    user    0m0.050s
    sys     0m0.270s
    
    네!결과적으로 Docker sync에서 동기화된 것이 분명합니다

    env_file


    공식 Docker 이미지를 사용하면 환경 변수를 잘 활용하여 시작할 때의 설정을 바꾸는 메커니즘이 있다고 생각합니다.
    예를 들어 MySQL 이미지MYSQL_ROOT_PASSWORD루트 사용자의 비밀번호나 MYSQL_USER,MYSQL_PASSWORD로 사용자를 만들 수 있다.
    이거 개발자마다 가격 바꾸고 싶지 않아요?
    이 경우 docker-compose.yml내 env파일 옵션을 사용해 보십시오.
    docker-compose.yml
    version: "3"
    services:
      mysql:
        images: mysql:5.7
        env_file:
          - mysql.env
    
    The “env_file” configuration option(공식 문서)
    그리고 지정한 mysql.env 파일을 만들어서 환경 변수를 적으세요.
    mysql.env
    MYSQL_ROOT_PASSWORD=password
    MYSQL_USER=dbuser
    MYSQL_PASSWORD=password
    
    이렇게 MySQL 컨테이너를 시작합니다!
    $ docker-compose up -d mysql
    $ docker-compose exec mysql mysql -u dbuser -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.28 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
    
    잘 시작해서 dbuser로도 로그인할 수 있습니다!
    여기도 mysql.env.sample처럼 샘플 서류가 준비돼 있어 복사하고 이름을 바꾸어 사용하면 편리하다.

    총결산


    이러한 기본적인 설정은 Sample 파일로Git가 관리할 수 있고 개발자들이 디테일하게 마음대로 조작할 수 있다.
    실제로 예전에 Docker에서 Magento2의 프로젝트 개발 환경을 만들 때 "설정을 만지작거리지 말라"고 했기 때문이다.
    config 설정을 변경하고 싶은데 어떻게 하면 좋을까요?
    "Mac의 경우 느리지만 Volume 설정을 바꿀 수 있나요?"
    이렇게 쓰면 안 돼요.
    반성을 살려 설정을 유연하게 변경할 수 있게 한 결과 이번 결론이 나왔다.
    Magento Advent Calendar의 내용은 아니지만 Magento2처럼 프로젝트 파일이 많으면 Read/Write의 횟수가 많아집니다.
    멀티OS에 대응하는 Docker 개발 환경docker-compose.override.ymlenv_file을 만들기 편하므로 Magento 개발자뿐만 아니라 꼭 사용하세요!
    (이렇게 되면 Docker가 회사 내에 보급되었으면 좋겠다

    좋은 웹페이지 즐겨찾기