다중 운영체제가 Docker 개발 환경을 지원하는 제작 방법 [docker-compose편]
저번 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.yml
및 docker-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.sample
docker-compose.yml.sampleversion: "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.yml
과 env_file
을 만들기 편하므로 Magento 개발자뿐만 아니라 꼭 사용하세요!(이렇게 되면 Docker가 회사 내에 보급되었으면 좋겠다
Reference
이 문제에 관하여(다중 운영체제가 Docker 개발 환경을 지원하는 제작 방법 [docker-compose편]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bravebright9/items/d978b556ff410b8f0616텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)