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

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

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

10708閲覧

【docker】alpine内のnginxを再起動するにはどうしたら良いですか?

hasshy

総合スコア102

nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/05/29 16:45

編集2019/05/30 01:53

Dockerで開発環境を作っていたのですが、nginxのコンテナ内に任意のconfファイルを追加したのですが有効にできませんでした。

conf.doverrides.confと言う任意の設定ファイルを追加したので、有効にするためにwebサーバーを再起動したいのですが、alpineの再起動ができません。
nginxの再起動です。失礼しました。

コンテナのイメージはnginx:1.15.12-alpineです。
CentOSでWebサーバーを実装した時は、/etc/init.d/nginx restartで再起動できたのですが、alpineの場合はどうすれば良いのでしょうか?

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

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

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

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

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

gentaro

2019/05/29 17:26 編集

最初こっちに書きましたが回答欄に移動します
guest

回答2

0

ベストアンサー

コンテナはそういう使い方するものじゃなく、必要なファイル等を全て含んだコンテナを構築→起動→終了(破棄)を繰り返すもので、サービスやOSの再起動が必要になるケースがそもそもない、というのが普通かな、と思います。

つまり「コンテナ内のnginxやalpine自体を再起動」するのではなく、「ベースとなるコンテナイメージに対し、必要に応じてファイルを追加したりコマンドを追加した(この場合.confファイルを追加した)新たなコンテナを構築」して、起動するだけで良いはず。

あとそもそも論ですが、「コンテナ内のalpine」というのはコンテナの実行環境であるホスト側とカーネルを共有してますので、「再起動」という発想は適さないと思います。

従来型の仮想マシン上で別OSが起動するような環境をイメージされているんだと思いますが、根本的な発想が異なるので、その辺を調べて本当にコンテナの利用が適した使い方なのか、を判断された方が良いかと。

コンテナ自体の扱い方がしっくりこない(環境をいじってOSごと再起動するような方法が良い)のであれば、Virtual boxやVMVare等、従来型の仮想マシンをご利用された方が良いと思います。

投稿2019/05/29 17:29

編集2019/05/29 17:40
gentaro

総合スコア8949

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

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

hasshy

2019/05/30 02:27 編集

ご回答ありがとうございます。 知識不足で失礼しました。 おっしゃる通り、OS自体の再起動は不要です。 ご指摘を聞いて、Dockerfileで```COPY```をするのと、docker-compose.ymlの```volume```で同期するのではタイミングが違うからNginxの再起動が必要になるのかとも思えてきました。
gentaro

2019/05/30 05:42 編集

たぶん、イメージをビルドするフェーズと、ビルドされたイメージを利用(起動)するフェーズがごっちゃになっているんだと思いますが…。 Dockerfileに記述するのは「新しいコンテナイメージをビルドする」ための手順です。 Dockerfileに記述された内容は、元になるイメージに対し、基本的に一行実行するたびに毎回コンテナを起動し、処理を実行し、実行結果を追記した新しいコンテナのイメージが作られます。 つまり、目的の構成ファイルを含んだコンテナのイメージを一度ビルドしてしまえば、そのイメージを起動するだけで良いわけで、この時点ではdocker-compose.ymlは関係ないはずです。 docker-compose.ymlに記述するのは、「作成されたイメージ」を起動(利用)するときの手順です。 これは基本的にコマンドラインでdockerコマンドを使ってやる操作をまとめた結果に過ぎません。 構成ファイルのコピー、というのはその前に終わっている(終わっていないとおかしい)はずで、後からマウントするボリュームに構成ファイルを入れておこうとされているのであれば、それはそもそものやり方として間違っています。
hasshy

2019/05/30 09:58

度々ありがとうございます。 また、丁寧にご説明ありがとうございます。 Dockerfileとdocker-composeについてごちゃごちゃに覚えていました。 おっしゃる通り構築時と起動時と分ければ合点が行きます。 コンテナを起動すれば、ミドウェアも起動して設定ファイルを読み込むので、問題の根本は違いますね。
guest

0

結局、nginxのconf.dに入っている、default.confを書き換える方法で解決しました。
default.confと任意のconfファイルの違いはわからずじまいですが、一旦、クローズさせていただきます。

投稿2019/05/30 10:01

hasshy

総合スコア102

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問