2020-03-28 Win10+Docker+VSCode+React/Node.js配置

需求

根據(jù)客戶需求,要在離線環(huán)境開發(fā)部署基于React的應(yīng)用。由于:

  • 開發(fā)主環(huán)境為離線Windows
  • 生產(chǎn)環(huán)境離線且尚不明確
  • node.js應(yīng)用移植成本

決定采用Docker,在聯(lián)網(wǎng)環(huán)境下配置React后攜帶入開發(fā)環(huán)境。

過程

Docker

1. 安裝Docker

家里是Win10環(huán)境,半年前已經(jīng)安裝了Docker。
Docker在Win10上的安裝可以參考官網(wǎng)解決方案 Docker Desktop for Windows 。
(然而其實質(zhì)。。。就是裝了一個VirtualBox里安裝的Linux虛擬機(jī),在里面裝Docker。)
常規(guī)解決方案:
Docker官網(wǎng)
Docker Desktop for Mac
Docker Desktop for Windows
Win7/8可能需要更多操作:Windows Docker 安裝-菜鳥教程
這部分坑是最多的,可惜時間太久已經(jīng)忘記了。

2. Docker檢查和配置

檢查Docker版本:

docker -v

配置Docker鏡像:
由于眾所周知的原因,需要配置鏡像加速器。
系統(tǒng)右下角 Docker 圖標(biāo)內(nèi)右鍵菜單 Settings,窗口里Daemon標(biāo)簽頁內(nèi)配置json:

Docker配置鏡像

Docker+React

1. Node.js

使用Node官方鏡像為基礎(chǔ)搭建

查看node官方鏡像

docker search node

拉取最新版本的node鏡像:

docker pull node:latest

查看本地鏡像:

docker image

運行容器:

docker run -itd --name node-test node

進(jìn)入容器并查看node和npm版本

docker exec -it node-test /bin/bash
$ node -v
$ npm -v

另外,(由于眾所周知的原因,需要配置鏡像加速器)* 2
使用cnpm或給npm配置淘寶鏡像:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org
$ npm config set registry https://registry.npm.taobao.org

2. 創(chuàng)建react應(yīng)用

來到了常見的create-react-app環(huán)節(jié)

$ cnpm install -g create-react-app
$ cd /usr/src
$ create-react-app my-app
$ cd my-app/

啟動應(yīng)用:

$ npm start

成功運行應(yīng)用,然而在瀏覽器里并不能看到。容器的端口并沒有和主機(jī)綁定。
查看運行中容器狀態(tài):

docker ps

查看容器端口綁定

docker port [容器id或容器name]

保存一下鏡像并創(chuàng)建容器綁定端口:

docker stop [舊容器]
docker commit [舊容器] [新鏡像名]:[tag名]
docker run --name [新容器] -p 3000:3000 [新鏡像名]:[tag名]

重新開啟應(yīng)用:

docker exec -it [容器] /bin/bash
$ cd /usr/src
$ cd my-app/
$ npm start
開啟成功

3. VSCode+Docker

VSCode是真的香。。。


VSCode Docker插件1

我用的第一個。


VSCode Docker插件2

能看到當(dāng)前鏡像和容器。容器上右鍵可以Attach Visual Studio Code。
然后容器就停了。。。。
docker容器運行必須有一個前臺進(jìn)程, 如果沒有前臺進(jìn)程執(zhí)行,容器認(rèn)為空閑,就會自行退出。Attach Visual Studio Code使用的是attach命令,就是使用現(xiàn)有終端,如果你要退出容器操作,那么bash結(jié)束,容器也就退出了。

docker run --name [新容器] -p 3000:3000 -d [新鏡像名]:[tag名] /bin/sh -c "while true; do echo hello world; sleep 1; done"

重新創(chuàng)建容器,加了持續(xù)運行進(jìn)程。

VSCode訪問容器

這樣就差不多完成了。
另:這樣實際上是把node_module安裝在了容器里,方便移植拷貝。實際上,為了提升容器運行速度,應(yīng)該將node放在主機(jī)上。參考How to create-react-app with Docker

參考資料:

  1. Docker
  2. React
  3. Docker 國內(nèi)倉庫和鏡像
  4. 修改運行中的docker容器的端口映射
  5. VSCode 支持Docker
  6. docker啟動容器之后馬上又自動關(guān)閉了
  7. How to create-react-app with Docker
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容