定義一個AWS + Node.js + mongoDB的多容器 Docker app並可在AWS Elastic Beanstalk (Multi-container Docker) 環境部屬
定義一個AWS + Node.js + mongoDB的多容器 Docker app並可在AWS Elastic Beanstalk (Multi-container Docker) 環境部屬,除了提供基礎的nodejs + mongoDB 執行環境,並加上以下特性:
第一次摸索shell & Docker掌握程度不高任何不完善部分懇還請指教修正
Amazon Web Services
- Elastic Container Service
- Elastic Beanstalk
- S3
- CodeCommit
Docker Image
- node:8.9-alpine
- mongo:3.4.10
- ubuntu
Docker-Compose
1.建立一個CodeCommit Repository
2.建立一個MongoDB 備份存放的 S3 bucket
3.建一個 ECS Repository
#完整指令可在ECS後台直接產出
$ docker build -t <YOUR Repository name> .
$ docker tag <YOUR Repository name>:版本號 <Repository URI>:版本號
$ docker push <Repository URI>:版本號
#如果遇到no basic auth credentials 使用以下指令:
$ eval $(aws ecr get-login | sed 's|https://||')
4.使用 micahhausler/container-transform 將docker-compose.yml 轉譯為 Dockerrun.aws.json
$ sudo bash -c "cat docker-compose.yml | docker run --rm -i micahhausler/container-transform >> Dockerrun.aws.json"
5.將Dockerrun.aws.json打包zip檔 Deploy到EB
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "res"
"essential": true,
"image": "<ECS Repository URI>:版本號",
...
},
...
],
...
}
6.訪問 xxx.REGION.elasticbeanstalk.com 並使用Robo工具分別測試nodejs mongodb是否正常(須先將對應的EC2 inbound rules 新增mongodb port)
1.commit & Push node.js source code to CodeCommit Repository
2.重啟應用程序服務器
docker-compose up --build