DockerComposeでNuxt.jsとMongoDBを構築した

はじめに

DockerCompose で Nuxt.js と MongoDB を構築したので手順をメモ

Docker インストール

1. Ubuntu の場合

以下の通り
https://qiita.com/youtangai/items/ff67ceff5497a0e0b1af

2. Amazon Linux の場合

2.1 Docker インストール

1
2
3
4
5
sudo yum update -y
sudo amazon-linux-extras install docker -y
sudo service docker start
sudo usermod -a -G docker ec2-user
docker --version

2.2 Docker Compose インストール

1
2
3
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

docker 設定

1
2
mkdir mydocker
cd mydocker

以下のdocker-compose.ymlを設置する
※hoge はリポジトリ名に変更する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3'
services:
web:
image: node:8.15.0-alpine
ports:
- 3000:3000
environment:
PORT: 3000
HOST: 0.0.0.0
volumes:
- ./hoge:/hoge
working_dir: /hoge
command: npm run start
links:
- mongo
mongo:
image: mongo
restart: always
ports:
- 27017:27017
volumes:
- ./db:/data/db
- ./configdb:/data/configdb

Nuxt アプリ起動

クローンとビルド

1
2
3
4
5
6
7
git clone hoge.git
cd hoge

curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum install -y nodejs
npm -v
npm run build

mongodb 接続コードサンプル

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;async () => {
try {
const mongodb = require('mongodb')
const MongoClient = mongodb.MongoClient
// ユーザパスワードなし
const client = await MongoClient.connect('mongodb://mongo:27017', { useUnifiedTopology: true })
// ユーザパスワードあり
// const client = await MongoClient.connect('mongodb://user:pass@mongo:27017', {
// useUnifiedTopology: true
// })

const db = client.db('testDB')
const col = db.collection('users')

const data = await col.find({ id: 'test' }).toArray()
console.log(data)
client.close()
} catch (err) {
console.log({ err })
}
}

Docker 起動

1
2
3
4
docker-compose up -d
docker ps -a
# 停止したい時は
docker-compose stop

結果確認

mongodb インストール

1
sudo vi /etc/yum.repos.d/mongodb-org-4.2.repo

以下を貼り付け

1
2
3
4
5
6
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
1
sudo yum install -y mongodb-org

参考
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-amazon/

結果確認

1
2
3
4
5
6
7
# 挿入結果を確認
mongo
use test_db
db.stats()
db.createCollection('test_col');
db.test_col.insert( { name:'test_name_1007' } );
db.test_col.find()

エラー対応

エラー
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
原因
docker が起動できていない
解決策
sudo service docker start

エラー
Address already in use
原因
前の起動のプロセスが終了してなくてポートがかぶってる
解決策(PID は変えること)
ps ax | grep mongo
kill -9 3990

# Docker
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×