我试着用 VS Code 中的 DevContainer 进行操作
你好!我是GxP的Higo。
这篇文章是Growth Expert Partners的2023年Advent Calendar的第一天!
这是我第一次在日历上来写文章!
学习Docker不仅可以记录,而且能够达到一举两得的效果!
首先
这次我想记录一下我学习Docker的过程。我会写到搭建Go语言环境并进行Hello World的部分。选择Go语言并没有特别的意义,只是因为买了一本书,想尝试一下!此外,我希望在不污染本地环境的情况下进行语言环境的构建,所以将使用一个名为Devcontainer的工具。如果能够使用Docker,就可以快速地使用各种编程语言,而且无需考虑物理服务器,可以轻松地进行Web应用程序的测试和尝试。让我们试试看吧。
Docker是什么?
如果我们进行调查,很快就能找到答案。简单来说,它利用容器技术快速构建虚拟环境。
DevContainer是什么?
通过创建Docker容器作为开发环境,可以简单地在容器内完成所需的库、运行时版本和扩展功能,以下是官方说明。
安装
1. 安装Docker Desktop和VS Code。
2. 在VS Code中安装一个名为Remote Development的扩展功能。
Docker Compose 是什么
未来我们打算使用多个容器进行开发,因此我们会使用一个名为Docker Compose的工具。其相关信息可以在官方文档中找到。
使用YAML文件来配置应用程序的服务,只需执行一个命令,即可生成和启动所有基于配置内容的服务。这是用于定义和运行Docker应用程序的工具。
简单来说,以前您只能通过一个容器执行命令进行操作,现在您可以操作多个容器。
容器启动的过程
主要的有三个。
1. 创建Dockerfile
如果在docker-compose.yml文件中直接指定镜像,则不需要Dockerfile来运行Docker Compose中的容器。但是,如果需要对现有镜像进行附加配置或自定义,则需要创建Dockerfile,并在docker-compose.yml中引用它。
创建docker-compose.yml文件
这是docker Compose的配置文件,以YAML格式记录即将创建的容器的初始状态。
当在存放docker-compose.yml文件的目录中执行docker compose up命令时,会构建和启动docker-compose.yml文件中定义的所有服务(容器)。
我通过阅读这个网站对docker-compose有了参考。
【初学者向】图解]Docker Compose是什么?现役工程师易懂解释与Docker的区别
搭建环境
现在,简单的说明结束了,我们开始进行环境搭建。
我们需要创建一个文件夹,并准备好Dockerfile和docker-compose.yml文件。
FROM golang:1.15.6
RUN apt-get update && apt-get install -y curl
version: '3'
services:
golang:
build:
dockerfile: Dockerfile
volumes:
- ..:/workspace/golang/ # プロジェクトルートをマウント
tty: true
{
"dockerComposeFile": "docker-compose.yml",
"service": "golang",
"workspaceFolder": "/workspace/${localWorkspaceFolderBasename}"
}
这次几乎不需要Dockerfile。
这是为了将来在DevContainer中添加扩展功能而预先创建的。
可以使用docker-compose来创建go环境本身。
由于这次没有将扩展功能放入DevContainer中,所以需要通过命令来执行go。
打开Windows PowerShell并确认Docker已安装。
docker --version
如果没有安装的话,我们就从安装开始做吧。
cd {プロジェクトフォルダにしたい場所}
在我这个情况下,使用了以下的命令。
cd .\Documents\golang\
根据docker-compose.yml文件创建镜像和容器。
如果想要在Dockerfile中添加扩展功能并重新创建,可使用–build选项。
docker compose up
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
由于未安装扩展功能或模块,可能会出现找不到模块的警告信息,但由于只需显示“Hello World”,因此将继续进行。
cd go/src
go run main.go
最后
只花了5分钟就创建了环境,真的只是简单地创建了环境,从这里开始需要着手逐渐添加扩展功能等,整理开发环境是必要的,但暂且先尝试着去接触一下吧!能够准备各种语言的环境和Linux环境而不弄乱环境,感觉非常方便。不过,我主要使用的IDE是IntelliJ,所以也许不能用它试一试。
文献引用