使用容器Docker進行開發
使用容器進行軟體開發已成為一種普遍的做法。開發中的常見用例是執行應用程式所需的服務環境,諸如安裝Redis,MongoDB甚至Elasticsearch之類的東西。大多數情況下,開發人員依賴於docker-compose定義應用程式所需的整套服務。
下面展示透過使用指定某個語言開發所需的所有內容建立容器影像,包括(但不限於):
- 程式碼編輯器
- 偵錯程式
- 探查
- 跟蹤工具
- 包管理員
- 構建工具
使用容器進行開發的好處
OS獨立
即使使用的是Docker for Mac,您還可以使用基於Linux的環境進行開發。如果你非常熟悉Linux,可以應用於建立真正的生產容器映象(以及許多其他事情)。
安裝速度
與使用安裝程式指令碼相比,容器映象(特別是docker映像)在新計算機上的執行速度非常快。這是因為您只需要使用預編譯的二進位制檔案下載映象。
可移植性
如果使用安裝程式指令碼,則可能無法在其他計算機上執行,因為某些軟體包以不同方式安裝。比之下,一旦構建了容器映象,它幾乎可以在任何機器上工作。
健壯性
一旦構建了映象,它就不會突然中斷。這與安裝程式指令碼不同; 當我剛剛使用git儲存庫來儲存配置和指令碼時,我會有很多事情發生,它會根據安裝程式的執行時間而中斷。
注意事項
不是Docker的常見用例
Docker對這種工作流程的支援並不是很好。docker的一些問題需要數年才能 解決。
還需要一些膠水程式碼
您想要從主機對映到容器中有幾件事情。我寫了一個工具,讓這個更容易,稱為slipway,在我編寫此工具之前,我將使用shell指令碼初始化容器。
如果您不使用Linux作為主機作業系統,事情會變得更加複雜。
0.選擇基本映象
對於初學者來說,構建docker映象需要一個配置檔案(Dockerfile)來定義要在容器中執行的步驟。執行所有這些步驟後,容器將“提交”為新映象。
大多數映象基於另一個映象。我建議從Ubuntu基礎開始,因為它非常受歡迎。
在一個空目錄的檔案下新增下面到Dockerfile:
FROM ubuntu:bionic |
1.設定您的使用者
由於映象中僅包含root使用者。我們需要建立一個具有適當許可權的使用者才能在容器內執行。
# Feel free to change this to whatever your want ENV DOCKER_USER developer # Create user with passwordless sudo. This is only acceptable as it is a # private development environment not exposed to the outside world. Do # NOT do this on your host machine or otherwise. RUN apt-get update && \ apt-get install -y sudo && \ adduser --disabled-password --gecos '' "$DOCKER_USER" && \ adduser "$DOCKER_USER" sudo && \ echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ touch /home/$DOCKER_USER/.sudo_as_admin_successful && \ rm -rf /var/lib/apt/lists/* USER "$DOCKER_USER" WORKDIR "/home/$DOCKER_USER" |
2.基本工具
Ubuntu核心(這是我們的影像所基於的)並不包含太多,因為它是為“準備釋出”應用程式而構建的。讓我們為開發新增一些基本包:
RUN yes | sudo unminimize && \ sudo apt-get install -y man-db bash-completion build-essential curl openssh-client && \ sudo rm -rf /var/lib/apt/lists/* |
3.多路複用(可選)
如果您沒有使用像VSCode或Webstorm這樣的GUI編輯器,那麼您可能需要一個程式可以進行單個shell會話並將其拆分為多個。這稱為終端多路複用器。我更喜歡tmux。
RUN sudo apt-get update && \ sudo apt-get install -y tmux && \ sudo rm -rf /var/lib/apt/lists/* |
我可以在這裡討論很多自定義選項,但為了保持教程簡短,我將跳過這一步。請隨意檢視我的專案,瞭解更好的開發環境理念。
4.安裝您的選擇編輯器
現在我們需要一些東西來編輯原始碼。我可以推薦Neovim,也可以其他任何編輯。
RUN sudo apt-get update && \ sudo apt-get install -y neovim && \ sudo rm -rf var/lib/apt/lists/* |
5.安裝執行時
在這個例子中,我們將安裝NodeJ,因為站點上的大多數開發人員都使用它。如果您在此步驟中使用Python或其他語言,則可以安裝它。
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash ENV NVM_DIR /home/$DOCKER_USER/.nvm RUN . "$NVM_DIR/nvm.sh" && \ nvm install --lts && \ nvm alias default stable |
在此步驟中,為您自己的語言安裝任何其他工具。
構建然後執行
您只需要在執行之前構建映象。
在您的終端中,執行:
docker build -t development-environment .
執行環境的最終命令可能因您要傳輸的內容而異。這是一個示例命令:
docker run --rm -ti \ -v $HOME/workspace:/home/developer/workspace \ development-environment bash |
相關文章
- 使用TestContainers進行容器Docker測試 – EmmanouilAIDockerUI
- 如何使用Visual Studio Code遠端容器(Remote Container)功能在Docker內部進行開發 - Docker BlogREMAIDocker
- vscode連線遠端伺服器docker容器進行開發VSCode伺服器Docker
- win 環境使用easyswoole利用docker進行開發Docker
- 使用docker執行CentOS容器DockerCentOS
- 如何使用Docker容器化改善你的開發流程Docker
- 使用 Docker 開發 PHP 專案(三):命令容器化DockerPHP
- docker進入容器Docker
- 使用Devstack進行開發dev
- 使用 Devstack 進行開發dev
- 使用eclipse 進行 Cesium 開發Eclipse
- 進入正在執行的Docker容器的4種方式Docker
- Minikube:使用 Kubernetes 進行本地開發
- VSCode使用LSP進行Swift開發VSCodeSwift
- 使用 .NET 進行遊戲開發遊戲開發
- Docker-容器使用Docker
- 把 Windows 裝進 Docker 容器裡WindowsDocker
- Docker_06 容器-進階操作Docker
- docker學習3:Docker容器使用Docker
- .net 使用Docker開發Docker
- 使用API進行區塊鏈開發API區塊鏈
- 使用 go kit進行微服務開發Go微服務
- 在Docker容器中使用Hadoop執行Python MapReduce作業DockerHadoopPython
- (四)Docker安裝使用容器Docker
- docker建立容器後如何使用Docker
- 使用iptables管控docker容器Docker
- 進入docker容器的四種方法Docker
- 使用遠端Docker進行整合測試Docker
- 使用 Kotlin + Spring Boot 進行後端開發KotlinSpring Boot後端
- 如何在Windows上使用Python進行開發WindowsPython
- 使用 Eclipse 在 Fedora 上進行 PHP 開發EclipsePHP
- 使用keil進行stm32的開發
- Zend Studio使用教程:使用PHP 7進行開發(二)PHP
- Docker--容器和映象的使用Docker
- 使用 Docker Compose 管理多個容器Docker
- 使用docker-compose管理freeswitch容器Docker
- docker 容器的使用與檢視Docker
- 如何在Docker容器中使用ArthasDocker