質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

1416閲覧

【方針についてアドバイスください!】VPS上のdocker-composeをホットデプロイしたい。

yu-imu

総合スコア35

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2020/04/15 09:13

編集2020/04/15 09:23

###背景
VPSサーバ(ノード1つ)でdocker-composeを利用して起動する環境を作りたいです。(※個人開発かつインフラ周りは初学者です。)
デプロイ時の課題として、下記リンクにもある通りソースコードを更新するタイミングでダウンタイムが発生してしまいます。
有識者の方々に「同様な立場の場合何を選ぶか?」についてご意見をお伺いしたいです。

■参考
Docker Swarm Modeの解説から質問大会まで、「さくらの聖夜2019」イベントレポート
https://knowledge.sakura.ad.jp/23392/

###打ち手候補
最初は、docker swamが簡単そうと思い手を動かしたもののコマンド等が使えないものがあり振り出しに戻ったという状況です。
改めて、回答をみて実装を決めたいと思います。

1. Nginx-proxyを利用しロードバランシングする。

■ 参考(実装イメージ)
Dockerのみでお手軽ロードバランシング&(ほぼ)0ダウンタイムデプロイ
https://blog.potproject.net/2018/07/08/docker-0-deploy

懸念点

  • 既存のNginxのDockerfileを改修する必要があるが影響が出ないか。(Nginx.confのチューニングができなそう?)
  • あまり事例が見つからないので、正しいやり方か不明。

2. Docker swamを利用する。

■ 参考(実装イメージ)
docker swarm でホットデプロイを試してみよう
https://qiita.com/ryo-endo/items/99764706523201d4285b
Single node docker swarm でお手軽 rolling update
https://blog.1q77.com/2018/10/rolling-update-on-single-node-docker-swarm/

懸念点

  • 技術自体が枯れている?(docker ver 17以降のドキュメントが見当たらない。)
  • Docker swamモードのStack作成等のコマンドが試したところ動かなそう。

3. その他
⇨もっとイケてるやり方があれば教えてください。(知見がないのですが、k8sを使う?)

###評価いただきたい事項
(下記項目に触れた回答をいただけると嬉しいです。)

  • 既存コードへの影響が少ないか?(※判断できないと思うので感覚値で問題ありません)
  • 実装難易度(工数と技術のレベル、既存実装との親和性)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Docker swarmは試したことはありませんが、Kubernetesの台頭で出番がなくなってきているのではないかと思われます。yu-imuさんのやりたいことがどちらかによってやることは変わってくるかもしれません。

  • ロードバランシングがしたい
  • ネットワークの基礎を身に着けたい

前者の場合であればKubernetesの使い方だけさっと学んでそれでおしまい、もしくはAWSのECSを使うなどの方法があります。ただしこれもネットワークの知識がないと難しいですが。

後者であればまずロードバランシングを考えずに素のnginxを立て、その後ろにDockerコンテナのアプリケーションを走らせる構成にしてみてはどうでしょうか。問題の切り分けがしやすく、手を入れやすいかと思います。

初学者ということなので後者のやり方でまずはネットワークを使い倒してみることをおすすめします。

投稿2020/04/15 09:40

A_kirisaki

総合スコア2853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu-imu

2020/04/15 09:55 編集

ご回答ありがとうございます。言葉足らずであったため補足します。 やりたいことは、デプロイ時にサービスを止めずに稼働させたいことです。 (サービスのトラフィックが上がりHerokuで動かしていたものを移行させようという背景があります。ただ、アクセスの割にそこまで稼げていないので従量課金は避けたいなと思っていたところでした。) >ロードバランシングを考えずに素のnginxを立て、その後ろにDockerコンテナのアプリケーションを走らせる構成 実は、productionのみ上記の実装(Nginxをリバースプロキシとして利用)にしております。 上記状況を踏まえた場合は、 >Kubernetesの使い方だけさっと学んでそれでおしまい で良いでしょうか。
A_kirisaki

2020/04/15 10:01

プロダクションレベルであれば個人的にはKubernetesをおすすめします。GCPでe2-microの通常ノード(動き続けるインスタンス)1つとプリエンプティブルノード(落ちるかもしれないノード)2つで1日動かし続けて200円ほどです。月6000円になりますが、これでロードバランシングやローリングアップデート、SSL証明書の管理、デプロイの自動化なども可能です。あとはお財布との相談といったところでしょうか。
yu-imu

2020/04/15 10:47

補足ありがとございました!あるべきがイメージできるようになったので助かります。 固定費で月6000円かかるのはネックなので要検討してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問