设置开发环境
重要
Dev Environments 不再处于积极开发中。
虽然现有功能仍然可用,但我们可能需要更长时间来响应支持请求。
Docker Desktop 4.13 对 Dev Environments 的更改
Docker 简化了开发环境项目的配置方式。入门所需的一切都包含在一个
compose-dev.yaml
文件中。如果您的现有项目包含.docker/
文件夹,则下次启动时会自动迁移。如果您正在使用
.docker/docker-compose.yaml
,我们会将其移动到../compose-dev.yaml
。如果您正在使用.docker/config.json
,我们会创建一个../compose-dev.yaml
文件,其中包含一个名为 "app" 的服务。该服务被配置为使用 JSON 中引用的镜像或 Dockerfile 作为起始点。
要设置开发环境,还需要额外的配置步骤来告诉 Docker Desktop 如何构建、启动并为您的服务使用正确的镜像。
Dev Environments 使用项目根目录下的 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 文件中定义的服务可以使用其他目标来构建或直接引用其他镜像。
下一步?
了解如何分发您的开发环境