設定開發環境

重要

開發環境已不再積極開發。

雖然目前的功能仍然可用,但我們可能需要更長的時間來回應支援請求。

Docker Desktop 4.13 中開發環境的變更

Docker 簡化了您設定開發環境專案的方式。您只需要一個 `compose-dev.yaml` 檔案即可開始使用。如果您有一個具有 `.docker/` 資料夾的現有專案,則下次啟動時會自動遷移。

如果您使用的是 `.docker/docker-compose.yaml`,我們會將它移至 `../compose-dev.yaml`。如果您使用的是 `.docker/config.json`,我們會建立一個名為「app」的單一服務的 `../compose-dev.yaml` 檔案。它會設定為使用 JSON 中參考的映像或 Dockerfile 作為起點。

要設定開發環境,有一些額外的設定步驟可以告訴 Docker Desktop 如何建置、啟動和使用適合您服務的映像。

開發環境使用位於專案根目錄的 `compose-dev.yaml` 檔案。此檔案允許您定義專用服務所需的映像、您想要公開的埠,以及其他設定選項。

以下是一個 `compose-dev.yaml` 檔案的範例。

version: "3.7"
services:
  backend:
    build:
      context: backend
      target: development
    secrets:
      - db-password
    depends_on:
      - db
  db:
    image: mariadb
    restart: always
    healthcheck:
      test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent" ]
      interval: 3s
      retries: 5
      start_period: 30s
    secrets:
      - db-password
    volumes:
      - db-data:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=example
      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db-password
    expose:
      - 3306
  proxy:
    build: proxy
    ports:
      - 8080:80
    depends_on:
      - backend
volumes:
  db-data:
secrets:
  db-password:
    file: db/password.txt

在 yaml 檔案中,建置上下文 `backend` 指定應使用位於 `backend` 目錄(`context` 屬性)中的 Dockerfile 的 `development` 階段(`target` 屬性)來建置容器。

Dockerfile 的 `development` 階段定義如下

# syntax=docker/dockerfile:1
FROM golang:1.16-alpine AS build
WORKDIR /go/src/github.com/org/repo
COPY . .
RUN go build -o server .
FROM build AS development
RUN apk update \
    && apk add git
CMD ["go", "run", "main.go"]
FROM alpine:3.12
EXPOSE 8000
COPY --from=build /go/src/github.com/org/repo/server /server
CMD ["/server"]

`development` 目標使用 `golang:1.16-alpine` 映像,其中包含您開發所需的所有相依性。您可以直接從 VS Code 啟動您的專案,並與其他應用程式或服務(例如資料庫或前端)互動。

在範例中,Docker Compose 檔案是相同的。但是,它們可能不同,並且主 Compose 檔案中定義的服務可能使用其他目標來建置或直接參考其他映像。

下一步是什麼?

瞭解如何 發佈您的開發環境