我在虚拟机上使用Docker创建了一个用于开发的nginx-Nodejs-Mongodb蓝图

我只需要一种选择性地用中文解释以下内容:通过vagrant up在虚拟机上使用Docker创建了一个开发环境(主要是Node部分)。
(此次未使用docker-compose)

补充记录:
这里已经重新制作了如下所示内容。
使用Docker Compose在虚拟机上创建了用于Nodejs开发(nginx-Nodejs-Mongodb)的模板。

环境

操作系统版本为MacOS 10.12.6(Sierra),Vagrant版本为1.9.7。

准备好了

在Mac上搭建Vagrant上的Docker环境。前提是已安装了Vagrant。
※Docker将在创建新的虚拟机时自动安装,所以无需特别操作。

ソース

こちらに一式入れてあります。
https://github.com/manjiii/Vagrant-samples/tree/master/Skeleton-nginx-nodejs-mongodb
git cloneかダウンロードで任意のディレクトリにコピーして下さい。

目录结构

主机上的目录结构如下。

Skeleton-nginx-nodejs-mongodb
│
├── Vagrantfile
├── backup                #<- バックアップ(&インポート)用ディレクトリ(用意してあるのはMongoのデータのみ)
│   ├── mongo
│   └── set_ssh.sh
├── dockers               # <- 各Docker用のファイル
│   ├── mongodb
│   ├── nginx
│   └── node
├── settings
│   └── localsetting.yaml # <- Vagrantfile用の個別の設定ファイル
└── shell                 # <- Vagrant用の個別の設定ファイル
    ├── docker_exe.sh
    ├── docker_rm_all.sh
    ├── docker_rmi_all.sh
    └── setup_docker_cmd

用法

环境建设

启动游荡

只安装未安装的Vagrant用vagrant-vbguest、vagrant-gatling-rsync插件。

cd /your/path/Vagrant-samples/Skeleton-nginx-nodejs-mongodb
vagrant plugin install vagrant-gatling-rsync
vagrant plugin install vagrant-vbguest

在Skeleton-nginx-nodejs-mongodb目录中执行Vagrant up操作。首次运行可能需要一些时间来进行下载等操作。

cd /your/path/Vagrant-samples/Skeleton-nginx-nodejs-mongodb
vagrant up

当您使用vagrant up后,gatling-rsync开始运行。
如果您停止它,需要编辑后的文件才能生效。

vagrant gatling-rsync-auto

请执行以下命令并重新开始同步。

暂时确认功能的操作

nginx:
请在浏览器(或curl)中打开以下URL,将会显示hello nginx页面
http://192.168.33.10/

Node.js:
打开以下URL,可以在浏览器(或curl)中看到“hello node”页面的显示
http://192.168.33.10/app/

MongoDB:通过mongo命令或mongo工具从主机连接到192.168.33.10:27017。

开发方法

在Vagrant-samples/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers目录下,有配置了各个docker所需的文件。
每个文件夹下都有相应的Dockerfile,
只是获取了以下官方映像并进行了时区更改(使用日本时间):
nginx:1.13.3
node:7.10.1
mongo:3.4.7
※至于mongo,已创建了用于数据的目录。
如果想使用其他映像,请根据需要进行编辑。

由于每个日志都被输出到dockers/XXX/log目录下。

tail -f  ./dockers/*/log/*

只需一种选择,即可完全参考。

nginx 简介

nginx
├── Dockerfile
├── conf.d
│   └── default.conf
├── log
│   ├── access.log
│   └── error.log
└── www
    └── index.html

www目录下是用于存放静态内容的目录。
如果想要更改静态文件,请编辑此目录中的文件。
编辑完成后会自动反映到docker中。
另外,如果想要更改nginx的设置,
请修改conf.d/default.con文件,并运行vagrant provision或者停止/启动nginx的docker容器。
目前的配置是将/app代理给node。

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

包含了。

Node.js (译为「节点JS」)is a popular runtime environment for executing server-side JavaScript applications.

node/
├── Dockerfile
├── log
│   └── node-express.log
└── src
    ├── jsconfig.json
    ├── modules
    │   └── logger.js
    ├── package.json
    ├── routes
    │   ├── index.js
    │   ├── mongo.js
    │   └── router.js
    ├── server.js
    └── views
        ├── error.ejs
        ├── index.ejs
        └── mongo.ejs

请将src目录下的内容设置为用于动态内容(用于nodejs的文件)。
目前已经放置了用于mongo连接的文件作为示例。
如果您需要编辑nodejs文件,请编辑此文件。
编辑后将自动反映在docker中,并重新启动forever。

另外,我們還設定了Node.js的調試啟動配置和將調試端口(9229)轉發到Docker,這樣你可以在調試的同時執行。關於調試,請參考以下文件:在Visual Studio Code上調試遠程服務器上的Node.js。※因為已經在src文件夾內放置了.vscode/launch.json配置文件,所以不需要進行Visual Studio Code的其他設置。

如果想要对模块进行添加、删除等操作,请在编辑package.json后使用vagrant provision。

docker start -i npm-install

请在Vagrant上执行。
※node_modules仅存在于Vagrant / Docker中,不会反映到主机目录中。

MongoDB是一个开源的非关系型数据库管理系统,使用文档驱动数据模型,适用于大规模数据存储和处理。

mongodb/
├── Dockerfile
├── init
│   └── initialData.sh
└── log
    └── mongodb.log

您可以运行如下命令在vagrant上将初始数据复制到mongo docker容器的/tmp目录中:
在init/initialData.sh中包含了用于导入示例数据的命令。

docker exec -it mongodb bash /tmp/initialData.sh

请执行。
通常情况下包括输入数据等。

docker exec -it mongodb bash

我们可以直接进入Docker并输入mongo命令,或者通过主机上的mongo命令或工具连接到192.168.33.10:27017。

如果想要备份这些MongoDB数据,可以将其挂载至/vagrant/mongodb/db目录下,以实现持久化存储(即使停止Docker,数据也不会丢失)。

cd Skeleton-nginx-nodejs-mongodb
bash set_ssh.sh  #<- sshキーを登録してscpできるようにしています。
cd backup/mongo
bash  backup_mongo.sh

请执行。
恢复时请执行。

cd Skeleton-nginx-nodejs-mongodb/backup/mongo
bash restore_mongo.sh

进行。

在虚拟机上的目录结构

虚拟机上的目录结构如上所述,
已将其部署到/var/docker目录中。

/var/dockers/
├── mongodb
│   └── log
├── nginx
│   ├── conf.d
│   ├── log
│   └── www
└── node
    ├── log
    └── src

Vagrant默认将同步到/vagrant目录,为了防止覆盖等情况,将其禁用,并仅将必要的目录进行同步。
此外,为了持久化mongodb的数据,
将其挂载到/vagrant/mongodb/db目录下。

关于mongodb的数据,
如上所述,
保存在/vagrant/mongodb/db内。

请参阅Vagrantfile以获取更详细的信息。

关于这个环境

我计划随时更新。
如果有任何错误或改进的地方,请告诉我,谢谢。

广告
将在 10 秒后关闭
bannerAds