LoginSignup
1
2

More than 3 years have passed since last update.

初学者によるDocker理解まとめ⑤ 〜EC2インスタンスにdockerコンテナをデプロイするまで〜

Last updated at Posted at 2020-10-24

はじめに

ようやくDockerを学び始めたので自分の理解をまとめておく。

前回 => https://qiita.com/theFirstPenguin/items/b5f6ed253bed95fbec5a
次回 => https://qiita.com/theFirstPenguin/items/01d0eff8bba7ca7c2d8e

やったこと

  • 前回の続き
  • githubを介して、EC2にローカルPCのコードをアップロード
  • そしてdocker-compose up!

Githubを介して、EC2にローカルPCのコードをアップロード

まずはEC2インスタンスにログイン

ローカルPCの~/.sshにキーペアがあるとして、

cd ~/.ssh
ssh -i "ec2-key.pem" ec2-user@<public-ip>

EC2インスタンス上で鍵を作る

ssh-keygen -t rsa

パスフレーズを聞かれるので、必要に応じてパスフレーズを入力する。
正しく鍵が作成されていると ~/.ssh 以下に、id_rsaid_rsa.pub に2つのファイルができる。
id_rsa.pub のほうが公開鍵なので、この中身を github の Deploy Key に登録することになる。
この公開鍵をコピーしておく。

cat ~/.ssh/id_rsa.pub

コピーした公開鍵をGithubに登録する

SSHキー登録ページで登録できる。
スクリーンショット 2020-10-24 12.42.23.png

Titleはキーの内容がわかる文面を記入し、Keyに先ほどコピーした公開鍵を貼り付ける。

登録できたかをEC2から確認

ssh -T git@github.com

EC2からgithubのレポジトリをクローンして終わり!

git clone git@github.com:yourname/yourrepo.git

スクリーンショット 2020-10-24 12.50.06.png

そしてdocker-compose up!

その前に、一応おまじない。

sudo service docker start

そして

docker-compose up

あれ、なぜかエラー。。。
Error: Cannot find module 'express'ってなんで? ちゃんとpackage.jsonに書いてあるじゃないですか。。。

Creating express-app ... done
Creating nginx-web   ... done
Attaching to express-app, nginx-web
express-app | node:internal/modules/cjs/loader:903
express-app |   throw err;
express-app |   ^
express-app | 
express-app | Error: Cannot find module 'express'
express-app | Require stack:
express-app | - /usr/src/app/index.js
express-app |     at Function.Module._resolveFilename (node:internal/modules/cjs/loader:900:15)
express-app |     at Function.Module._load (node:internal/modules/cjs/loader:745:27)
express-app |     at Module.require (node:internal/modules/cjs/loader:972:19)
express-app |     at require (node:internal/modules/cjs/helpers:88:18)
express-app |     at Object.<anonymous> (/usr/src/app/index.js:1:17)
express-app |     at Module._compile (node:internal/modules/cjs/loader:1083:30)
express-app |     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10)
express-app |     at Module.load (node:internal/modules/cjs/loader:948:32)
express-app |     at Function.Module._load (node:internal/modules/cjs/loader:789:14)
express-app |     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:72:12) {
express-app |   code: 'MODULE_NOT_FOUND',
express-app |   requireStack: [ '/usr/src/app/index.js' ]
express-app | }
nginx-web | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
nginx-web | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
nginx-web | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
nginx-web | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
express-app exited with code 1
nginx-web | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
nginx-web | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
nginx-web | /docker-entrypoint.sh: Configuration complete; ready for start up
nginx-web | 2020/10/24 02:42:13 [emerg] 1#1: host not found in upstream "app" in /etc/nginx/nginx.conf:18
nginx-web | nginx: [emerg] host not found in upstream "app" in /etc/nginx/nginx.conf:18
nginx-web exited with code 1

いろいろ調べた結果、何やら難しいことが起きている模様。

アドバイスに従い、docker-compose.ymlを修正。

docker-compose.yml
     volumes:
      - './app:/usr/src/app'
      - usr/src/app/node_modules #追記

これでなんとかなりました!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2