メンチカツには醤油でしょ!!

ITエンジニア徒然 (AWS/Java/JavaScript/Google Spreadsheets/Jenkins/Mac/外部コミュニティ・勉強会レポ)

docker-compose.ymlで指定したDockerfile内のADD/COPYが効かない

仕様???

Dockerfileに書いてあるADD/COPYコマンド(及び他のコマンド)がdocker-compose.ymlで指定された場合に作動しないのです。
RUNのみ有効、というのが余計にややこしい。

ファイルをコンテナ内にコピーしたい場合、docker-compose.ymlのvolumesを使わないとできない場合があります。
(volumes使えばできるので判ってれば問題にはならなそうですが)

github.com

(追記) バージョンが違うと挙動が違う

できなかった (Docker for Windows)

> docker -v
Docker version 17.03.1-ce, build c6d412e
> docker-compose -v
docker-compose version 1.11.2, build f963d76f

できなかった (Docker for Mac)

$ docker -v
Docker version 1.12.6, build 78d1802
$ docker-compose -v
docker-compose version 1.9.0, build 2585387

できた (Docker on Ubuntu on Hyper-V)

$ sudo docker -v
Docker version 17.03.1-ce, build c6d412e
$ sudo docker-compose -v
docker-compose version: 1.3.2
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

(追記2) 公式ドキュメントでは出来そうな記載が...

You can add your code to the image using COPY or ADD directive in a Dockerfile.

You should use a volume if you want to make changes to your code and see them reflected immediately,

There may be cases where you’ll want to use both. You can have the image include the code using a COPY, and use a volume in your Compose file to include the code from the host during development. The volume overrides the directory contents of the image.

docs.docker.com

しかしThere may be cases where you’ll want to use both.が気になる…

ファイルの構成例 (一部)

/docker-compose.yml
/apache2.4/Dockerfile
/apache2.4/htdocs/index.html
/apache2.4/conf/httpd.conf

というような構成で、
Apacheのhtdocsディレクトリはディレクトリまるごと同期しても構わないのでvolumes指定
・confディレクトリ配下はいくつかファイルがあって上書きしたいのがhttpd.confだけなのでADDかCOPYしたい
みたいな場合に、docker-composeだとADD/COPYができないってことなんです。

docker-compose.yml (一部)

apache:
    build: ./apache2.4/
    volumes:
        - ./apache2.4/htdocs:/usr/local/apache2/htdocs
    links:
        - tomcat:tomcat

Dockerfile

FROM httpd:2.4.25

RUN apt-get update && apt-get install -y \
  nano

ADD ./conf/httpd.conf /usr/local/apache2/conf/httpd.conf

結局どうしたか

コンテナ内のconf配下のファイルを全部docker cpで拾ってきて配置しました。
と、思いきや、volumesにはファイルも指定できるんでしたね。

docker-compose.yml (一部)

apache:
    build: ./apache2.4/
    volumes:
        - ./apache2.4/htdocs:/usr/local/apache2/htdocs
        - ./apache2.4/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf
links:
        - tomcat:tomcat

Dockerfile

FROM httpd:2.4.25

RUN apt-get update && apt-get install -y \
  nano

できた!

github.com

JJUG CCC 2017 Springのタイムテーブルを公式から取得してテーブル化 #jjug_ccc

今回もまた同じフォーマットで見づらい…

前回は打ち直してましたが、今回は公式から直で取得するように改善です。

JJUG CCC 2016 Fallのタイムテーブルをテーブル化してみた - メンチカツには醤油でしょ!!

拡大表示はコチラ ⇒ JJUG CCC 2017 Sppring タイムテーブル

公式と違う場合はもちろん公式優先ですし、追従はするつもりですが、正当性は保証デキマセンm(_ _)m

Spreadsheetsは動的に取得しているのでアップデートされても追従するはずです!

申し込みはコチラから

jjug.doorkeeper.jp

公式サイト

www.java-users.jp

究極のIT系最新技術情報収集 モヒカンSlackがやっぱり凄かった

モヒカンSlackとは

qiita.com

Slackの公開チームであり、各チャンネルにfeedがいくつか登録されている情報収集用のチャンネルです。

チャンネル一覧

モヒカンslack( https://mohikan.slack.com )のチャネルリスト · GitHub

ある日

#randomに

ここは、雑談っぽいのは無いのです??

と書き込んだ方がいらっしゃってその流れで
#talking-room-engineer という別の雑談チャンネルがフォーカスされました。
そこに流れ込む人々。

どさくさで、意識高い人達に聞くチャンス!と思い
過去に読んだ記事で探していた記事を、どなたかご存知ないか聞いてみた。

f:id:ryoichi0102:20170327183107j:plain

1分で回答きた...!!!

モヒカンSlack、そして @salexkidd さん凄すぎ。感謝です。ありがとうございますm(_ _)m

正直、質問の内容がYahoo!知恵袋だったのですが、
こんなに早く回答頂けるとは思いませんでした。
Yahoo! 知恵袋で曲名が分からない質問者に答える人がすごすぎる | エンタメウス

ちなみに、探してた記事はコチラ

www.megamouth.info

『計測しない最適化は無意味』

引用してこれを言いたかったのです。

 

モヒカンSlack、おすすめです。

※ 質問したら何でも答えてくれるという所では無いです。