一千萬個為什麽

搜索

在Docker鏡像裏面開發?



每次我在我的團隊中加入一個新人時,我都必須經歷同樣的安裝所有事情的程序,找出自從我們上次登錄某人以來發生了什麽變化等。沒有樂趣。

我聽說過人們在開發環境中維護Docker容器,但我不知道如何實現這一點。

假設您在包含React Web應用程序的存儲庫上工作。我們選擇的IDE是IntelliJ。如果一個新的開發人員只是獲得一個安裝了所有必要的開發工具的容器,那將很酷。

我如何做到這一點?

轉載註明原文: 在Docker鏡像裏面開發?

一共有 3 個回答:

入門體驗應該與告訴新開發人員克隆repo並運行 docker-compose up 一樣簡單。就我個人而言,我不會擔心IDE集成,因為人們可能更喜歡使用不同的IDE。

每個項目/應用程序(如果你有多個)應該能夠單獨運行,每個項目/應用程序應該有自己的代碼庫。這是來自十二因子應用程序方法論的概念。

在每個項目的根目錄中添加一個 Dockerfile 和一個 docker-compose.yml 文件。

註意:我創建了工藝套件,您可以使用這些工具套件為框架自動生成這些文件/語言你使用一個命令(例如 mason craft nodejs ),你甚至不需要知道Docker。

Dockerfile 會將您的應用程序構建到映像中,安裝和依賴您的應用程序需要運行。此圖片是運行您的應用的圖片。

FROM node:8.8-alpine

# Set our workdir
WORKDIR /app

# Install and cache app dependencies
COPY package.json /app
RUN npm install 

# Add project files
COPY . /app

# start app
CMD [ "npm", "start" ]

docker-compose.yml 文件將啟動您的環境。它將定義Docker應該為您的應用程序啟動的所有服務

version: '2'
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3000:3000"

  mongodb:
    image: mongodb
    volumes:
      - ./storage/data/mongodb:/data/db
    ports:
      - "27017:27017"

當你加入一個新的開發人員時,你可以告訴他們 git clone 你的repo,並運行以下命令啟動他們的開發環境:

docker-compose up -d 

當你在本地開發,運行 docker-compose up 時,這種方法的優點是將你的代碼安裝為一個卷。

然後,當你想部署時,當你建立你的 Dockerfile 時,它會將你的代碼復制到你的圖像中,所以一切都很好地打包並輕松移動。

我們在 Codemason 上使用相同的方法,這是我的用於構建,管理和擴展基於容器的應用程序的服務。當您推送新代碼時,我們會自動從您的Dockerfile構建一個圖像。由於該映像包含應用程序需要運行的所有內容,因此可以輕松在任何服務器上啟動該映像,並在多臺服務器上擴展/縮小。

如果您打算嘗試除IntelliJ以外的其他內容,那麽Eclipse Che就會在容器中運行。理想情況下,您的DevOps工具鏈的其他組件會有插件。


There are several ways to achieve it, depend on which one, you like.
The most simple and easy is, get the docker image and create environment in it and save it for later, so when the member joins, you just need to start that image and whole environment is created FYI :
Docker for dev
or
Dev Environment

註意:這些鏈接適用於PHP,您需要找出您喜歡的其他語言。 希望這可以幫助