設定開發環境
重要
開發環境不再處於積極開發階段。
雖然當前功能仍然可用,但我們可能需要更長的時間才能回覆支援請求。
Docker Desktop 4.13 中開發環境的更改
Docker 簡化了配置開發環境專案的方式。您只需一個
compose-dev.yaml
檔案即可開始使用。如果您有一個帶有.docker/
資料夾的現有專案,則下次啟動時會自動遷移該專案。如果您使用的是
.docker/docker-compose.yaml
,我們會將其移至../compose-dev.yaml
。如果您使用的是.docker/config.json
,我們會建立一個../compose-dev.yaml
檔案,其中包含一個名為“app”的單個服務。它被配置為使用 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 檔案中定義的服務可以使用其他目標進行構建,或直接引用其他映象。
下一步是什麼?
瞭解如何 分發您的開發環境