Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8866

【アプリ開発 1】【Node.js express Docker】 Dockerを用いてNode.js Express MongoDBの環境を構築する

$
0
0

※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。

Node.js Express MongoDBを用いたアプリ開発

受託開発でNode.js Express MongoDBを用いたアプリ開発を行うことになりました。
開発の中で得られた知見を、支障のない範囲で記録していきたいと思います。
アプリの内容はさておき、チームで開発するため、まずはDockerを用いて開発環境を構築を行います。

最初に用意するパッケージ

├── Dockerfile
├── data
│   └── db
├── docker-compose.yml
├── src
│   ├── node_modules
│   ├── package-lock.json
│   ├── package.json
│   └── test_db.js
├── .env
└── .gitignore
Dockerfile.
FROM node:12
WORKDIR /app
RUN npm install
docker-compose.yml
version:'3'services:app:build:.container_name:<アプリ名>_app_cntports:-8080:8080restart:alwaysworking_dir:/apptty:truevolumes:-/etc/passwd:/etc/passwd:ro-/etc/group:/etc/group:ro-./src:/appcommand:bashnetworks:-<アプリ名>-networkdepends_on:-mongomongo:image:mongo:4.2.5-bioniccontainer_name:<アプリ名>_db_cntrestart:alwaysenvironment:MONGO_INITDB_ROOT_USERNAME:${MONGO_INITDB_ROOT_USERNAME}MONGO_INITDB_ROOT_PASSWORD:${MONGO_INITDB_ROOT_PASSWORD}MONGO_INITDB_DATABASE:${MONGO_INITDB_DATABASE}volumes:-./data/db:/data/dbcommand:-mongodnetworks:-<アプリ名>-networknetworks:<アプリ名>-network:external:true
env.
APP_USER=hoge
MONGO_INITDB_ROOT_USERNAME=test
MONGO_INITDB_ROOT_PASSWORD=pass
MONGO_INITDB_DATABASE=testdb
gitignore.
node_modules/
data/
.env
.gitigunore
test_db.js
constmongodb=require('mongodb')constMongoClient=mongodb.MongoClientleturl='mongodb://test:pass@mongo:27017/'letdb_name='testdb'letcollection_name='testUser'console.log(url)console.log(db_name)console.log(collection_name)constoption={useNewUrlParser:true,useUnifiedTopology:true,}MongoClient.connect(url,option,(err,client)=>{//mongodb接続if(err!=null||client==null){console.log("<<<ログ>>>fail")console.log(err)}else{constdb=client.db(db_name)letrec={"name":"Taro","age":30}db.collection(collection_name).insertOne(rec,(err,res)=>{//テストデーター挿入if(err!=null){console.log("<<<ログ>>>err: insert")console.log(err)client.close()}else{db.collection(collection_name).find({}).toArray((err,result)=>{//データー取り出しif(err!=null){console.log("<<<ログ>>>err: select")console.log(err)client.close()}else{console.log(result)//結果出力client.close()}})}})}})
docker-compoes up

接続確認。

ターミナル別タブ開きアプリのディレクトリに移動

docker exec -it <アプリ名>_app_cnt bash
//コンテナ内に入る
node test_db

テストデーターの挿入、取り出しを確認

testdb
testUser
[ { _id: 5fe60041416135000e5cd787, name: 'Taro', age: 30 } ]

接続完了


Viewing all articles
Browse latest Browse all 8866

Trending Articles