使用 Docker Compose 在虚拟机上创建 Node.js 开发(nginx-Node.js-Mongodb)的模板

我尝试创建了一个用于Nodejs开发的虚拟机/容器环境。

这是我们以前在「docker上创建了一个用于开发nginx-Nodejs-Mongodb的模板」的基础上,使用Docker Compose重新创建的版本。

环境

    • MacOS 10.12.6 (Sierra)

 

    Vagrant 1.9.7

创建的环境

VM:

centOS7

docker container:

nginx:1.13.3
node:7.10.1
mongo:3.4.7

虚拟机的IP被设置为192.168.33.20。

准备开始

在Mac上使用Vagrant搭建Docker环境。
需要确保已经安装了Vagrant,然后按照上述步骤进行操作。
请注意,在创建新的虚拟机时会自动安装Docker,因此不需要额外的操作。

这道菜的调味汁

请将以下内容完整入您所指定的位置:
https://github.com/manjiii/Vagrant-samples/tree/master/Skeleton-nginx-nodejs-mongodb
请使用git clone或下载方式将其复制到任意目录中。

环境建设

启动流浪者

请使用Skeleton-nginx-nodejs-mongodb的方式进行Vagrant up。

cd /path/to/Skeleton-nginx-nodejs-mongodb
vagrant up
#初回はしばらく時間がかかります。

另外,需要安装vagrant-vbguest、vagrant-gatling-rsync插件。如果没有安装,将在vagrant up时自动安装。

请在启动虚拟机后执行rsync命令,以实现文件的自动更新。

vagrant rsync-auto

请注意,如果忘记执行这个命令,文件将无法在本地、虚拟机和容器之间同步。

确认动作

输入样本数据

我先登录到虚拟机,然后执行预先准备好的用于投入示例数据的shell脚本。

#vmにログイン
vagrant ssh

#vm上で操作
cd /vagrant
docker-compose exec mongodb bash /var/tmp/initialData.sh

各个容器的操作检查

nginx:
打开下方URL,将显示hello nginx页面
http://192.168.33.20/

使用Node.js打开以下URL,将显示“hello node”页面:
http://192.168.33.20/app/

MongoDB:
打开以下URL时,将显示在初始注册时所注册的示例数据(manjiii[1-4])
http://192.168.33.20/app/mongo

使用mongo命令或者适用于mongo的工具从主机连接到192.168.33.20:27017。

使用方式

目录结构

在 Dockers 下面,每个容器都有一个用于使用的文件目录。

Skeleton-nginx-nodejs-mongodb
├── Vagrantfile
├── docker-compose.yml
└── dockers
    ├── mongodb
    ├── nginx
    └── node

NodeJS (Node.js) – 一个开源的适用于服务器端和网络应用构建的 JavaScript 运行环境

该项目已被安装在Dockers/Node的目录下。

node/
└── src
    ├── .foreverignore
    ├── .vscode
    │   └── launch.json
    ├── jsconfig.json
    ├── modules
    │   └── logger.js
    ├── package.json
    ├── routes
    │   ├── index.js
    │   ├── mongo.js
    │   └── router.js
    ├── server.js
    └── views
        ├── error.ejs
        ├── index.ejs
        └── mongo.ejs

在此初始样本中,有一个与MongoDB连接的简单代码。位于node/src目录下的代码在node容器中使用forever运行,如果文件有更新,forever将自动重新启动并应用更改。

另外,我们已经配置了在Visual Studio Core中进行开发的设置(.vscode/launch.json),所以只需打开Visual Studio Core并在本地打开Skeleton-nginx-nodejs-mongodb/dockers/node/src文件夹,即可立即进行开发和调试。
※请参考下述内容了解调试方法。
在Visual Studio Code中调试远程服务器上的Node.js。

如果您想要添加模块或重新执行npm install,可以在容器上运行npm install。

#vmにログイン
vagrant ssh

#docker-composeファイルのディレクトリに移動
cd /vagrant

#container上でnpm install実行させる
docker-compose exec node_app npm install

nginx是一款开源的,高性能的HTTP和反向代理服务器。

dockers/nginx下有安装设置。

nginx
├── conf.d
│   └── default.conf
└── www
    └── index.html

www文件夹下的目录是用于静态内容的文件夹。
如果想要更改静态文件,请编辑这里的文件。
更改后会自动反映到docker中。
另外,如果想要更改nginx的设置,
请修改conf.d/default.con文件,然后重新启动container。

#vmにログイン
vagrant ssh

#docker-composeファイルのディレクトリに移動
cd /vagrant

#nginxを再起動
docker-compose restart nginx

目前的状况是将/app代理到node的设置。

    location /app/ {
        proxy_pass http://node_app:8080/;
    }

包含在里面。

MongoDB 可以进行中文本地化。

Dockers/MongoDB已安装在下面。

mongodb/
└── tmp
    └── initialData.sh

由于在虚拟机上使用卷进行数据持久化,因此只配置了用于初始数据导入的shell脚本。
尽管被用作初始数据导入,但您也可以在本地编辑initialData.sh,并使用下面的命令将数据重新反映到mongodb中。

#vmにログイン
vagrant ssh

#docker-composeファイルのディレクトリに移動
cd /vagrant

#initialData.shを実行
docker-compose exec mongodb bash /var/tmp/initialData.sh

另外,因为在虚拟机上已经设置了端口,因此可以通过主机上的mongo命令或工具连接到192.168.33.10:27017。

查看日志

日志将输出到每个虚拟机上的log目录。
※不会输出到本地。
您可以在每个docker目录/log中引用它,也可以使用以下命令批量引用。

#vmにログイン
vagrant ssh

#ログ参照
tail -f /vagrant/dockers/*/log/*.log

关于这个环境

我计划随时进行更新。
如果有任何问题、改进意见等,请告诉我,我将非常感激。

广告
将在 10 秒后关闭
bannerAds