괜찮아, 이 Docker의 진화를 깨뜨리자.사물이 바뀌는 방법은 야만적이다.
Docker가 기분이 들었을 때 기억하십시오... 엉뚱한 옥토퍼를 싸우는 것처럼 느껴졌습니까? 너무 많은 명령, 너무 많은 개념. Build, run, push, pull, volumes, networks... 내 머리가 회전하고있었습니다.해야할, 그러나 그것은 항상 약간 엉뚱한 느낌, 약간 ... 흔들림으로 가득 다.docker ps -a
그리고 절망적으로 그걸 기억하려고 노력한다.하나지난주부터의 명령어
그런 다음 천천히, 모든 것이 클릭하기 시작했습니다. 하나의 큰 유레카 순간이 아니라 작은 "아하!"발명 시리즈. 작은 트릭, 최적화, 작업 흐름 조정. 해크, 나는 추측합니까? 그리고 솔직히, 그들은 내 일상적인 일상에 너무 많이 침투하여 더 이상 그들에 대해 거의 생각하지 않습니다.내가 어떻게 일을 하는가.
여기에 갇혀있는 게임 변수 :
Terminal Aliases: The Sanity Savers ️
첫 번째 큰 승리?Aliases.♂️ 왜 내가 몇 달을 쓰는지docker-compose up -d --build
또는docker ps
다시 한 번 나의 속에 단순한 별자리를 설정하는 것.bashrc
또는.zshrc
그것은 계시였다.
# My sanity savers
alias dcu='docker-compose up -d'
alias dcd='docker-compose down'
alias dcb='docker-compose build'
alias dcr='docker-compose run --rm' # For running one-off commands
alias dps='docker ps'
alias dpa='docker ps -a'
alias di='docker images'
alias dip='docker image prune -f' # Prune dangling images
alias dvp='docker volume prune -f' # Prune unused volumes
alias dsp='docker system prune -af' # The big cleanup! 💥
그냥 타이핑dcu
전체 shebang 대신? Oh, milliseconds 저장! 그것은 비정상적인 소리,하지만 하루에 수십 번에 그것을 곱합니다 ... 그것은 추가합니다. 내 손가락은 저를 감사합니다. 적은 입력, 적은 타이포, 더 많은 흐름.
여기에서 docker의 궁극적 인 체이스시트를 얻으십시오 :도커 cheatsheet
2) The Mighty.dockerignore
상품명 : Slimming Down Builds
그 후에 그들은.dockerignore
다음글 : 또 다른 ‘두’ 순간, 나는 알고 있었다.gitignore
물론, 하지만 처음에는 얼마나 중요한지 깨닫지 못했다..dockerignore
내 초기 Docker builds 는너무 천천히왜냐하면 건설의 맥락이 전달되었기 때문이다.모든다음은 Docker Daemon 입니다.node_modules
, 로그, 임시 파일, 로컬 빌드 유물 ... 모든 것을!
적절한 만들기.dockerignore
파일, 내가 필요로하지 않은 모든 쓰레기를 나열내부이미지 빌드 프로세스? 갑자기 빌드가 더 빨라졌습니다. 이미지가 작았습니다 (때때로 극적으로).Docker에 블레이더를 넣는 것처럼 느껴졌습니다.이덜 혼란, 더 빠른 피드백 루프. 셰프의 키스!
3.Multi-stage Builds: Lean, Mean Production Machines ➡️
Multi-stage builds... OK, 이 하나는 처음에는 조금 더 진보 된 느낌. 개념은 훌륭합니다.
- 1단계: 기본 이미지를 사용하여 모든 빌드 도구, 컴파일러, SDK 및 애플리케이션 아르티팩트(예: 컴파일 바이너리 또는 bundled JavaScript)를 생성하는 데 필요한 의존성을 제공합니다.
- 2 단계 : 새롭고 깨끗하고 최소한의 기본 이미지를 시작하십시오 (알파인 또는 불안).
- 복사: 첫 번째 단계에서 이 순수한 두 번째 단계로 최종 유물만 복사합니다.
결과? 소형 생산 이미지! 빌드 도구와 개발자 의존성 (또한 보안 위험이있는)으로 팽창 된 이미지를 배송하는 대신에!오직애플리케이션을 실행하는 데 필요한 것이 무엇입니까.내 머리를 구문 주위에 포장하는 데 약간의 시간이 걸렸지만, 이미지 크기와 보안 자세의 차이는 엄청납니다.훨씬 더 전문적이고 더 ... 깔끔합니다. ️
Docker Compose Overrides: Taming Environments에 대한 리뷰 보기
대화해 보자Docker Compose override
파일. 다른 환경을 관리하는 것은 고통스러웠습니다. 개발자는 라이브 코드 재로드, 디버그 포트가 열려있는 볼륨을 필요로합니다. Prod는 다른 환경 변수, 어쩌면 더 엄격한 리소스 제한, 아마도 다른 입력 포인트를 필요로합니다.docker-compose.yml
혼란스러웠다, commented-out 섹션이나 복잡한 섹션을 포함if
환경 변수에 기초한 조건.
발견하기docker-compose.override.yml
순수한 행복이었습니다. 당신은 당신의 기초가 있습니다.docker-compose.yml
일반적인 구성으로, 그 후에, 당신은 만들 수 있습니다.docker-compose.override.yml
(Git가 일반적으로 무시하는.gitignore
(override
예를 들어, 당신은 심지어 특정 파일을 사용할 수 있습니다.docker-compose.prod.yml
그리고 그것을 사용하여-f
깃발 :docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
더 이상 우연한 헌신을 하지 마세요! dev settings의 더 이상의 우연한 헌신!
정기적인 청소 : 시스템 Tidy 유지 ✨
마지막으로, 습관은regular cleanupDocker는 축적할 수 있습니다.이렇게 많이당신이 조심하지 않으면 시간이 지남에 따라 잔인합니다.위험한 이미지 (이전 빌드의 해제 된 레이어), 사용되지 않은 볼륨, 중지 된 컨테이너, 오래된 빌드 캐시... 내 디스크 공간은 신비롭게 사라졌습니다.
정기적으로 달리는 리듬에 들어가기docker system prune -af
(공격적인 접근) 또는 더 타겟팅docker image prune
,docker volume prune
,docker network prune
그리고docker builder prune
디지털 decluttering처럼 느껴집니다.It keeps things running smoothly, prevents weird caching problems ("why isn't my change appearing?!"), 그리고 귀중한 gigabytes를 해방합니다.A clean workspace, a clean mind, right? ♂️ Runningdsp
(My Alias for)docker system prune -af
)는 이제 만족스럽고 거의 치료적인 일상입니다.
그래서 네, 이것들은 더 이상 '해킹'이 아닙니다. 그들은 뿌리를 내리고 있습니다. 그들은 근육 메모리입니다. 미스터리들은 생각없이 내 손가락에서 날아갑니다..dockerignore
그것은 내가 만든 첫 번째 파일 중 하나입니다. 다단계 빌드는 잠재적으로 살아가는 모든 것의 기본입니다.Compose overrides는 환경 차이를 원활하게 처리합니다.Cutting는 정기적으로 발생합니다.
Docker는 그 어리석은 옥토퍼 에서 강력하고 단순화 된 보조자로 갔습니다.이것은 지금 나의 길을 벗어나고 있습니다.Builds는 더 빠르고, 배포는 더 부드럽고, 내 디스크 공간은 더 행복합니다.나는그것은 단지 Docker 자체에 관한 것이 아니라 이러한 작은 세부 사항을 마스터하는 것이 나의 전체 개발 및 배포 작업 흐름을 부드럽게하는 방법에 관한 것입니다. 그것은 확실히 나의 삶의 일부가되었습니다, 또는 적어도 나의 디지털 삶.