AWS ECRを使ってみる

毎回DockerfileをGithubから取ってきてbuildしてrunするのはやっぱりイケけてないのでAWSのコンテナレジストリことECRを使ってみます。 マネジメントコンソールからECRのページに行き、[リポジトリの作成]を押します。 リポジトリ名は***.amazonaws.com/<名前空間>/<リポジトリ名>みたいな感じでつけれます。名前空間はなくても大丈夫なようです。 リポジトリを作成できたら、イメージをpushするためにアカウント認証を行いましょう。awsコマンドはbrew install awscliなどでインストールします。認証をしていない場合はaws configureをしてください。 以下のコマンドでdocker loginできます $(aws ecr get-login –no-include-email –region ap-northeast-1) 外側をかこっている$()をつけないとただdocker loginのコマンドが表示されるだけなので必ずつけて実行しましょう。リージョンはECRのリポジトリを作ったとこにします。 適当なDockerfileを用意し、ECRのリポジトリにタグをつけてdocker buildを行います。 cd <path-to-dockerfile>/docker build -t ***.amazonaws.com/garicchi/test-1 ./ docker pushを行います。 docker push ***.amazonaws.com/garicchi/test-1 無事pushできました。 せっかくなのでpullしてみます。 docker pull ****.amazonaws.com/garicchi/test-1 無事pullできました。 docker build時やpush時に長いリポジトリ名を書かなきゃなのは辛いですが普通に簡単に使うことができました。 docker-composeではどうやってpullするのか気になったので調べてみると、aws ecr docker-loginをちゃんとしておくとあとはdocker-composeのimage:タグにレジストリのURLつきでイメージ名を書くと、pullしてくれるようです。 AWS ECR と docker-compose – Qiita https://qiita.com/iwai/items/ec4103890b983039163b

git log ancestry-pathについて

git logの–ancestry-pathオプションがよくわからなかったので調べて見た。 まずこんな感じのコミットログを考える ここでgit log –graph –oneline 9103739..e3b7b68を実行すると、以下が出力される。 * e3b7b68 (HEAD -> master) I|\| * 659e5da (br-1) H| * bcb7e69 G| * a8b93fa (br-2) D* 2a3c429 F git logに<rev1>..<rev2>とrevisionを2つのドットで繋いで範囲にすると、「<rev2>の祖先のログから<rev1>の祖先を減算したログ」を出力する。 ここでgit log –graph –oneline –ancestry-path 9103739..e3b7b68を実行してみよう。 * e3b7b68 (HEAD -> master) I* 659e5da (br-1) H* bcb7e69 G a8b93faと2a3c429コミットがログから消えた。–ancestry-pathをつけていない状態ではa8b93faと2a3c429があったのに、つけるとa8b93faと2a3c429が消えた。この2つのリビジョンの法則性としては2つのドットの前に指定した9103739の子孫ではないということだ。 –ancestry-pathの働きは、「2つのドットの後ろにつけたリビジョンの子孫でないものを削除する」というものになる。 つまり、git log –ancestry-path <rev1>..<rev2>は、「<rev2>の祖先から<rev1>の祖先を削除し、さらに<rev1>の子孫でないものを削除する」意味になる。 これは結果的になにをしているかというと、「<rev1>から<rev2>の間にあるコミットだけ抽出」という結果になる。 2つのリビジョン間にあるコミットだけを抽出したい時、git log…