15
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker Composeを使って管理してる時にファイル更新したい

Last updated at Posted at 2016-02-21

例えばnginxのconfファイルを更新して反映させたい時ありますよね。

定義前提例

docker-compose.yml
version: '2'
services:
    nginx:
        build: ./nginx
        container_name: nginx
        ports:
            - 80:80
    (以下略)
nginx/Dockerfile
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 443
Bash
$ docker-compose -p foo up -d

-p fooオプションにつけるとイメージ名やネットワーク名やボリューム名にfoo_という接頭辞が付きます。

dockerコマンド

Bash
$ docker cp default.conf nginx:/etc/nginx/conf.d/default.conf
$ docker exec nginx nginx -s reload

当然Docker Composeを使っていたとしても上記の方法でも更新・反映は出来ますがDocker Composeの機能を使う方が良さ気かな?って。

docker-composeコマンド

docker-compose -p foo build nginx
docker-compose -p foo up -d nginx

するとRecreating nginxと表示されます。
nginxのイメージのみ作りなおしてコンテナも新しく作って既存コンテナと入れ替えてくれます。
これなら、更新したdefault.confがイメージに反映された状態になりますし、Docker Composeを折角使っているならこっちの方が良いのかなー?って気分に。

注意

ただし、コンテナを作りなおすわけなので一瞬とは言えnginxが止まる瞬間が出来ちゃうと思うのでそれが困る場合は使えないですね。そーゆー場合はdockerコマンドを使う方法しか無さ気?

15
18
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
15
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?