用docker跑js代码

1. 镜像配置

镜像配置文档如果你找不到哪里写镜像配置了,那你需要先注册,再来刷新页面。

我一开始没有下载docker for mac 所以我使用这种方法配置镜像

Docker Toolbox
(不推荐使用 docker toolbox,建议使用新的 docker for mac 及 docker for windows 以在这两种平台运行 docker )
请确认你的 Docker Toolbox 已经启动,并执行下列命令(请将 加速地址 替换为在加速器页面获取的专属地址)

docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
exit
docker-machine restart default 

结果不能正常使用 根据提示运行docker-machine env依然不奏效

Restarting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

于是我下载了 docker for mac 如果你是Windows系统,你可能需要 docker for windows

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

http://49e8d00f.m.daocloud.io Copy
点击 Apply & Restart 按钮使设置生效。

配置好之后,打开Kitematic 搜索 node 并create

点击exec会自动从终端进入容器

一开始不知道出什么问题了,一直报错,搜了半天也没解决

Error response from daemon: Container  XXXXX is not running

把node移除,重新create了。奇迹般的好了。


2. 在容器里运行JS代码

  1. 使用node 交互环境

点击exec会自动从终端进入容器

输入node进入node交互环境

console.log('hello js!');
//输出
hello js!
  1. 使用node xxx.js运行js文件

点击exec会自动从终端进入容器

//将js代码写入hello.js文件
echo "console.log('hello,js');" >> hello.js
//运行hello.js文件
node hello.js
//输出结果
hello,js

虽然有了node环境,但是除了交互式体验还可以,编辑文件非常不方便,

连vi编辑器都没有,apt-get update; apt-get install vim; vim安装都会报错。E: Unable to locate package vim

你常用的vscode在这里更是木有。

因此最好挂载个卷,可以在本机使用编辑器方便编写代码

  1. 挂载卷 在本地编辑文件 在容器运行

在本地终端执行下述命令:

docker run -it -v $PWD/dockerfile:/workspace node sh

上述代码表示

  1. 运行一个node 容器 执行 sh 命令 (docker run node sh)

  2. 由于 使用了 -it参数 表示打开一个终端进行交互操作

  3. -v 参数指定 挂载的卷 :为分割 把左边当前目录下的dockerfile文件夹挂载到右边根目录下的workspace文件夹

  4. 这意味着 dockerfile 和 workspace 绑定在一起的,里面的内容时刻保持一致

在dockerfile文件夹下创建hello.js文件,并且写入console.log('众里寻他千百度,蓦然回首,那人却在灯火阑珊处');

在容器中切换到workspace 并执行文件

以下代码在容器中执行

cd workspace

node hello.js

输出//
'众里寻他千百度,蓦然回首,那人却在灯火阑珊处'

你可能感兴趣的:(用docker跑js代码)