我尝试使用VScode+Docker共享React的开发环境
尝试使用Docker+VScode Remote-Container搭建React+TypeScript的开发环境。
听说使用VS Code的Remote Development可以在Docker中共享开发环境。
这样一来,我们可以在项目中统一环境,不管是在Windows还是在Linux下都能够以相同的方式进行开发。
系列文章列表
准备工作
必备工具 (bì jù)
-
- VScode
- Docker Desktop(またはdocker, docker-composeコマンド)
安装VScode的Remote Development插件。
我正在Windows10和Fedora36上进行操作确认。
创造环境
首先,使用vscode+docker创建一个空的开发环境。
创建一个空的项目文件夹,并在其中创建一个.devcontainer文件夹。
在VScode的Remote-Container中,Microsoft提供了alpine和nodejs的默认镜像,但由于想要进行各种自定义,所以选择从alpine构建。
如果要使用默认镜像,则无需创建devcontainer.json等文件,直接执行”Open Folder in Container”即可。
创建devcontainer.json文件、docker-compose.yml文件和Dockerfile文件。
可从以下位置下载devcontainer.json和docker-compose.yml的示例文件。
Dockerfile 的翻译选项:
容器文件
FROM alpine:3.16
RUN adduser --disabled-password vscode
RUN apk add bash
WORKDIR /workspace
USER vscode
docker-compose.yml的汉语本地化的版本:
version: '3.8'
services:
dev:
image: sample-react-express-dev
hostname: dev
user: vscode
build:
context: .
dockerfile: Dockerfile
volumes:
- ..:/workspace:cached,z
command: /bin/sh -c "while sleep 1000; do :; done"
devcontainer.json翻译成中文可以为”开发容器文件.json”。
{
"name": "sample-react-express",
"dockerComposeFile": [
"docker-compose.yml"
],
"service": "dev",
"workspaceFolder": "/workspace",
"remoteUser": "vscode"
}
创建文件后,尝试使用docker-compose进行构建测试。
docker-compose -f .devcontainer/docker-compose.yml build
在构建成功后,用Ctrl+Shift+P打开命令面板,并输入”Remote-Containers: Open Folder in Container”来执行。
选择项目文件夹并打开。
完成Docker的构建和启动后,将显示屏幕。
您可以在右下角的终端中使用Linux命令。
如果终端没有显示,可以按Ctrl+@显示。
如果要打开新的终端,可以点击终端右上方的“+”按钮。
可以在Windows上使用Linux命令,因此可以基于此创建环境。
添加节点
在Dockerfile中安装Node、NPM、PNPM和TypeScript。
Dockerfile: Docker文件
RUN apk add nodejs=16.20.1-r0
RUN apk add npm
RUN npm install -g pnpm
RUN npm install -g typescript@4.7.4
尽量使用apk来进行安装,例如使用apk命令来安装节点。
可以通过以下链接在apk上确认可安装的nodejs软件包版本:https://pkgs.alpinelinux.org/package/v3.16/main/x86_64/nodejs。
如果需要的版本不存在,则需要使用wget进行下载。
从菜单的“文件”>“关闭远程连接”选项中关闭项目一次。
重新构建Docker镜像。
docker-compose -f .devcontainer/docker-compose.yml build
当再次使用 “Remote-Containers: Open Folder in Container” 命令打开文件夹时,会反映项目。
创建React项目
使用Vite创建项目。
在终端中运行以下命令以创建React示例项目。
pnpm create vite front --template react-ts
设置端口
Vite在默认情况下使用随机端口,但是在docker中,如果不固定端口会造成不便,所以需要修改配置。
文件
"scripts": {
"dev": "vite --port 3000 --host",
固定端口,并使服务器可以从外部访问。
docker-compose.yml文件
ports:
- 3000:3000
允许打开端口3000以便访问。
快速启动Vite
重新创建容器和镜像。
打开项目并使用pnpm dev命令来启动。
cd front
pnpm install
pnpm dev
只需一种选项,用中文将以下句子改写:
通过浏览器访问http://localhost:3000/,如果能够显示Vite + React的界面,则表示成功。
Git 兼容。
为了支持git,需要额外安装git和openssh。
Dockerfile 皮埃萊尔
RUN apk add openssh
RUN apk add git
.gitignore 文件
将ssh密钥排除在git的管理范围之外,以避免提交。
/.ssh
如果更改了设置,重新在Docker中构建并再次打开文件夹。
这样,只需将密钥文件(id_rsa、id_rsa.pub)复制到.ssh文件夹中,就可以在容器内使用git。
项目的分发
只需要一种选项:
在通过git获取项目后,可以使用vscode的Remote-Containers: Open Folder in Container功能来打开项目文件夹,即可立即开始开发,并创建开发环境。当准备好环境后,在终端中运行以下命令即可启动vite的开发服务器。
cd front
pnpm install --frozen-lockfile
pnpm dev
示例代码
请以母语中文进行重新表述,只需一种选项:
https://github.com/betarium/sample-react-express/tree/0.1.3