我在虚拟机上使用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以获取更详细的信息。
关于这个环境
我计划随时更新。
如果有任何错误或改进的地方,请告诉我,谢谢。