プログラミングと旅と映画の日々

普段はスマホ決済サービスの会社でバッグエンドを担当しているエンジニアです。プログラミングと趣味の映画、株、時々うどんに関してブログを書いていこうと思います。海外ドラマ、クロスバイクも好きです。

【Docker】Docker fileのCOPY命令で設定ファイルを保存【入門】

Docker fileのCOPY命令ADD命令

f:id:takanori5:20181028132956p:plain
COPY命令はホストマシン上のファイルをイメージ内にコピーする命令です。

nginxイメージ内に修正した設定ファイルの内容を保存していきたいと思います。

まずはnginxコンテナを立ち上げていきます。

$ docker run --name tmp-nginx --rm -d nginx
960e083f54488cf5815e4bd3bb6830b4135d27e2bfb6bbfadd28b7e8dcf4be5e

-rm オプションはdocker imagestop時にコンテナを自動削除するオプションです。

コンテナからホストへのコピー
$docker cp <コンテナID>:/etc/my.cnf my.cnf
ホストからコンテナへのコピー
$docker cp my.cnf <コンテナID>:/etc/my.cnf

では、やってみます

$ docker cp tmp-nginx:/etc/nginx/conf.d/default.conf ./
$ ls
default.conf

copyできました。
では設定ファイルに修正を加えます。

$ vim default.conf
#port番号を80から8080に変更します。
server {
    listen       8080;
    server_name  localhost;
...
}

以下のようなDockerfileを作成して、COPY命令を書きます。

nginxのイメージを元にしてCOPY命令を書きます。

$ cat Dockerfile
FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/default.conf

ではbuildします。

$ docker build -t nginx:ver1 .
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM nginx:latest
 ---> dbfc48660aeb
Step 2/2 : COPY default.conf /etc/nginx/conf.d/default.conf
 ---> 9179d15926aa
Successfully built 9179d15926aa
Successfully tagged nginx:ver1

build成功。これを元にコンテナを起動します。

$ docker run --name web -p 8080:8080 --rm nginx:ver1
172.17.0.1 - - [02/Nov/2018:07:32:24 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36" "-"

8080ポートで接続できました。