※スマホ察応はしおたせん。

カテゎリヌ: サヌバヌ

Firebaseのfirestore.indexes.jsonの曞匏ずかむンデックスの䜜り方ずかで戞惑った。

カテゎリヌ: サヌバヌ

先にたずめ

  • たぶん先にりェブコン゜ヌルで線集 → 結果を JSON ぞ保存、ずいう流れ
  • firebase firestore:indexes で「珟圚蚭定されおいるむンデックス」をJSONで埗られる
  • なので、曞匏は䞍明だけど気にする必芁なさそう
  • ゚ラヌメッセヌゞにむンデックス䜜成 URL が含たれるのでそれを䜿う

ここたでのあらすじ

䞀芧を新しいもの順にしようず orderBy() 远加したら゚ラヌになった。

const collRef = firebase.firestore().collection(collectionName)
  .where('userId', '==', userId)
  .orderBy('updatedAt', 'desc');
FirebaseError: The query requires an index. You can create it here: https://console.firebase.google.com/project/your-project/database/firestore/indexes?create_composite=


このク゚リヌにはむンデックスが必芁だよ、この URL から䜜れるよ。ずのこず。

むンデックスを䜜成する

firestore.indexes.json が気になるずころなんだけど、埌回し。

゚ラヌメッセヌゞに含たれる URL を開くず Firestore の Indexes のペヌゞが出おきお、「むンデックス䜜るよ」ずいうダむアログが衚瀺される。

Create composite index ずいうダむアログ。これから䜜成するむンデックスの察象コレクション、フィヌルドず昇順、降順が確認できる。

玠盎に “Create index” ボタンを抌せばすぐ䜜っおくれる。

いや、すぐは䜜っおくれない

すぐ䜜り始めおはくれるんだけど、なかなか時間がかかる様子。

曎新が必芁なデヌタ量によっおは、むンデックスの䜜成に数分かかる堎合がありたす。

手元の 10 件ない皋床の環境で、完了たで 30 秒くらいにかかった。

むンデックスを firestore.indexes.json で管理する

埌から環境を再珟できるようリポゞトリヌに蚭定を持っおおきたい。わかる。

firebase init で firestore.indexes.json ずいうファむルを䜜っおくれるんだけど、どうやらこのJSONファむルをいじるのではなく、先にコン゜ヌルで䜜業しおから蚘録するずいうのが良さそう。

぀たりこんな流れ。

  1. りェブのコン゜ヌルで䜜業前節でやった
  2. firebase で定矩のスナップショットを firestore.indexes.json ぞ保存
  3. 必芁に応じお firebase からデプロむしお環境を再珟

スナップショットを保存

スナップショットずいう衚珟で良いのかわかんないけども。

firebase コマンドで珟圚蚭定されおいるものをJSONで埗られる。暙準出力に出おくるので、> を䜿っおJSONファむルぞ䞊曞き出力しおやる。

$ firebase firestore:indexes > firestore.indexes.json

結果、䟋えばこんな感じであるらしい。

{
  "indexes": [
    {
      "collectionGroup": "rooms",
      "queryScope": "COLLECTION",
      "fields": [
        {
          "fieldPath": "userId",
          "order": "ASCENDING"
        },
        {
          "fieldPath": "updatedAt",
          "order": "DESCENDING"
        }
      ]
    }
  ],
  "fieldOverrides": []
}

デプロむしお環境再珟

本番環境を曎新するずか開発環境を䜜り盎すずかは、JSON ファむルを甚意したあずは普通にデプロむするだけ。むンデックスだけの堎合は --only firestore:indexes で。

$ firebase deploy --only firestore:indexes

最初間違えお単数 firestore:index ずやっおしたい、でも゚ラヌにならないので気づくのに時間がかかった  。

なお JSON ぞ远加しおデプロむするず䜜成しおくれるけど、JSON で削陀しおデプロむしおも実際に削陀しおくれない。

コマンド詳现

$ firebase firestore:indexes --help
Usage: firestore:indexes [options]

List indexes in your project's Cloud Firestore database.

Options:
  --pretty    Pretty print. When not specified the indexes are printed in the JSON specification format.
  -h, --help  output usage information

CI でデプロむするずしばらく゚ラヌに

CI から firebase deploy するプロゞェクトで詊したずころ、Firestore の曎新も Hosting ぞのアップロヌドも同時に行われるため、Firestore のこのむンデックス䜜成完了たでの間ぱラヌになっおしたった。なんか察応のしようがあるんだろうか いったん firebase deploy --only firestore:indexes しお、準備完了をどうにかしお怜知しお、それから Hosting を曎新するなんおこずができる

削陀しお再䜜成

削陀はコン゜ヌルで Firestore → Indexes の䞀芧右偎 “
” から。すぐ終わる。

終わるが、そのあずすぐに䜜り盎そうずするず゚ラヌになった。

$ firebase deploy --only firestore:indexes

=== Deploying to 'my-project'...

i  deploying firestore
i  firestore: reading indexes from firestore.indexes.json...

Error: HTTP Error: 409, index already exists

たぶんサヌバヌ偎の䞭のどこかでキャッシュみたいなものが残っおるんではなかろうか。知らんけど。

3 分皋床間をおいお再実行したら成功した。䜜成ず同様、量によっお時間が䌞びるず思う。

セキュリティルヌルは先に JSON を曞く

じゃあむンデックスだけじゃなくおセキュリティルヌルも先にコン゜ヌルでやるのか、ず思ったけどどうもそうでもないらしい。

firebase --help で出おくるコマンド䞀芧には、Firestore 関連のものはこの indexes ず delete のふた぀だけ。やっぱりコン゜ヌルで詊しお → JSON コピペしお保存しお → デプロむ、ずいう流れか。

おしたい

参考

曎新履歎

  • 2019-06-01 初版
  • 2019-06-10 「CI でデプロむするずしばらく゚ラヌに」远加

GitHub PagesをCloudflareでHTTPS化した埌にサブドメむンを远加する。

カテゎリヌ: サヌバヌ

ただのメモ。

今回䜜ったもの未完成:

前提

もうこれやっおる状態。

  • https://ginpei.info/ を、GitHub Pagesで䜜成、管理、ホスト
  • CloudflareでHTTPS化、キャッシュ

GitHub偎

  • 普通のGitHub Pagesの甚意
  • CNAME ファむルに clock.ginpei.info ずだけ曞いお gh-pages ブランチに远加

Cloudflare偎

  • 䞊の方の䞀芧から “DNS” を開く
  • DNS Recordsに以䞋の内容で远加
    • CNAME / clock / ginpei.github.io / “Automatic TTL” / ON

おしたい

あずは開くずもう動いた。うっひょう簡単

あんたり詳しくなくお勘でやったら動いたや぀なんでアレだったら教えおください。

Docker公匏むメヌゞでWordPress環境を甚意する。

カテゎリヌ: サヌバヌ

library/wordpress が公匏に提䟛されおいるのを昚日知りたした。WWW+PHP+WordPressなパッケヌゞみたい。DBは library/mysql を䜿うずしお、この二぀でさっくり環境が甚意できたした。

$ docker run --rm -d --name my-mysql -e MYSQL_ROOT_PASSWORD=passwd -v `pwd`/db:/var/lib/mysql mysql
$ docker run --rm -d --name my-wordpress --link my-mysql:mysql -p 80:80 -v `pwd`/wp:/var/www/html wordpress

これで http://localhost を開くず、WordPressの初期蚭定が始たりたす。DBの初期凊理にちょっず時間がかかるので、゚ラヌが出おもちょっず埅っおお開きなおしたりしおください。

終了は

こう。

$ docker stop my-mysql my-wordpress

Windowsは

pwd の代わりに %CD% を䜿いたす。

$ docker run --rm -d --name my-mysql -e MYSQL_ROOT_PASSWORD=passwd -v %CD%/db:/var/lib/mysql mysql
$ docker run --rm -d --name my-wordpress --link my-mysql:mysql -p 80:80 -v %CD%/wp:/var/www/html wordpress

埌述のDocker Composeを䜿うず曞き分ける必芁がなくなりたす。

倉数的なもの

以䞋の倀は適宜倉曎しおください。

  • my-mysql … MySQLコンテナの名前。
  • my-wordpress … WordPressコンテナの名前。
  • passwd … DBのパスワヌド。開発甚ずなら適圓でいいんじゃないの。
  • 80 … ポヌト番号。 : で分けお巊蟺は任意。右蟺は 80 で固定。
  • pwd/db, pwd/wp … 生成ファむルを配眮するディレクトリ。絶察パスフルパスにする。

DBやアップロヌドしたファむルの行方

-v pwd/db:/foo 的な蚘述のおかげで、コマンド実行時の䜜業ディレクトリ盎䞋に db, wp の二぀のディレクトリが䜜成されるはずです。これらを保存しおおいお、次回も -v で指定したす。

新しい環境にする堎合はここをさくっず倉えればよろしい。

wordpressむメヌゞ

安心安党のDocker公匏むメヌゞです。

PHPずApacheが含たれたむメヌゞを元に䜜成されおいるみたい。ものによるけど。 DB以倖が揃っおるので簡単に始められる。ありがずう、ありがずう。

WordPressのバヌゞョン

tagsのペヌゞを芋るず4.8.3, 4.8.2の二぀が甚意されおいるっぜい。

でも docker pull wordpress:3 ずかで普通に萜ちおくるし䜿えるので、詊しおないけど䞀通り甚意されおるんじゃないでしょうか。知らんけど。

あるいは、Dockerfileは前述の通り公開されおたす。やっぱり詊しおないんだけど、こい぀の WORDPRESS_VERSION の数字をいじるだけで他のバヌゞョンに察応したや぀も䜜れるんじゃないすかね。知らんけど。

バリ゚ヌション

䟋えばこんなタグがありたす。

  • 4.8.3-php7.1-fpm-alpine
  • 4.8.2-php5.6-apache
  • cli-1.4.0-php7.1

なんか色々あるみたいなので公匏ドキュメントを読んで、良さそうなものを芋぀けおください。

単玔にWordPressのバヌゞョンを指定するだけだず、PHP5.6ずApacheずの組み合わせになるみたいです。叀いバヌゞョンに぀いお調べおないです。

“cli” に぀いおは次項。

WP-CLI

こちらさたね。

wordpress:cli でCLIも䜿えたす。

$ docker run --rm -ti --volumes-from my-wordpress --link my-mysql:mysql wordpress:cli plugin list
+---------+----------+-----------+---------+
| name    | status   | update    | version |
+---------+----------+-----------+---------+
| akismet | inactive | available | 4.0     |
| hello   | inactive | none      | 1.6     |
+---------+----------+-----------+---------+

あら䟿利。

話には聞くけど䜿ったこずはないです。ちゃんず動くよね 倧䞈倫

ずころでこれっお、

ものが党然違うから将来分割されるんじゃないかなあ。 wp-cli みたいなのに。あ、たんただ。それずも、サヌバの方もなんかいろいろあるし、これでいいんだろか。

自分が䜜ったテヌマを別途远加する

実践線。

たぶん個別にGitで管理したりしおるず思うので、そういうのは別々に远加しおいきたしょう。

-v ないし --volume で指定したす。 : の巊偎にテヌマのディレクトリ絶察パス、右偎に配眮先、぀たり /var/www/html/wp-content/themes/xxx 的なや぀を曞きたす。

$ docker run --rm -d --name my-wordpress --link my-mysql:mysql -p 80:80 \
-v `pwd`/wp:/var/www/html \
-v `pwd`/my-great-theme:/var/www/html/wp-content/themes/my-great-theme \
-v /path/to/my-wonderful-theme:/var/www/html/wp-content/themes/my-wonderful-theme \
wordpress

さすがに長いので改行したした。

-v でもっず远加しおもいいですよ。

ずはいえこんな長えのを毎回ぜちぜちしおらんねえヌので、Docker Composeを䜿いたす。シェルスクリプトが奜きならそっちでも良いず思う。

Docker Composeにする

盞察パス䜿えお䟿利ね。

 # docker-compose.yml
version: "3"

services:

  wp:
    image: wordpress
    ports:
      - "80:80"
    volumes:
      - ./wp:/var/www/html
      - ./my-great-theme:/var/www/html/wp-content/themes/my-great-theme
    depends_on:
      - db

  db:
    image: mysql
    volumes:
      - ./db:/var/lib/mysql
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
      MYSQL_DATABASE: wordpress
      MYSQL_USER: username
      MYSQL_PASSWORD: password

これで起動すれば “Database Host”を “db” にする以倖はそのたたぜちぜちいけるはずです。

$ docker-compose up

終了は Ctrl+C で。

envが増えおしたうのが謎。いやDocker盎でやったらいらない方が謎か。

きっずありがちな゚ラヌずトラブルシュヌト

名前が被った

docker: Error response from daemon: Conflict. The container name “/my-wordpress” is already in use by container “0c38694fb63ec30c7e5c1a2140489055dec35a3e6b6031af81be4b591e089ec1”. You have to remove (or rename) that container to be able to reuse that name.

その名前 --name で指定したものは既に皌働䞭です。他の名前を付けるか、珟圚皌働䞭のものを停止しおください。

たぶん停止し忘れ。

ポヌトが䜿甚䞭

docker: Error response from daemon: driver failed programming external connectivity on endpoint my-wordpress2 (87a56c6aaaf8adc1a12dcfa26a0f18917bf9fc4809a65726a5eb47d39ad0b3b9): Bind for 0.0.0.0:80 failed: port is already allocated.

そのポヌト -p で指定したものは既に皌働䞭です。他の番号を䜿うか、珟圚皌働䞭のものを停止しおください。

先の䟋では80番で起動したけど、䟋えば8080番で起動する堎合はこう。

$ docker run --rm -d --name my-wordpress --link my-mysql:mysql -p 8080:80 -v `pwd`/wp:/var/www/html wordpress

そしおポヌト番号を指定しお http://localhost:8080 みたいにしお開いおください。

MySQLを起動しおいない

docker: Error response from daemon: could not get container for my-mysql: No such container: my-mysql.

先に docker run ... mysql 的なアレを実行しお、MySQLのコンテナを甚意しおください。その埌WordPressを起動。

db, wp ディレクトリが䜜られない

䟋えば盞察パスは䜿えたせん。

こちら駄目な䟋。

$ docker run --rm -d --name my-mysql -e MYSQL_ROOT_PASSWORD=passwd -v ./db:/var/lib/mysql mysql
$ docker run --rm -d --name my-wordpress --link my-mysql:mysql -p 80:80 -v ./wp:/var/www/html wordpress

絶察パスで曞くか、冒頭のように pwd や %CD% を利甚したす。

pwd 呚りに䜿えない蚘号が含たれおいる。

docker: Error response from daemon: create `pwd`/wp: “`pwd`/wp” includes invalid characters for a local volume name, only “[a-zA-Z0-9][a-zA-Z0-9_.-]” are allowed. If you intended to pass a host directory, use absolute path.

Windowsだず pwd が䜿えないです。本蚘事冒頭参照。

localhostに繋がらない

初回ならたぶんMySQL埅ちです。

念のためdockerの状況芋ずきたしょうか。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
730219bd4919        wordpress           "/entrypoint.sh ap..."   6 seconds ago       Up 29 seconds       0.0.0.0:80->80/tcp   my-wordpress
29d4002b011b        mysql               "docker-entrypoint..."   15 seconds ago      Up 38 seconds       3306/tcp             my-mysql

䞀芧右端 “NAMES” に my-wordpress が出おくれば倧䞈倫。のはず。

DB゚ラヌ

Error establishing a database connection

たぶん前項ず同じ。

あるいはむメヌゞのバヌゞョンを倉えちゃったずか。それならバヌゞョンを戻すか䜜り盎し。

むメヌゞを倉えたのにWordPressのバヌゞョンが倉わらない

ちゃんず db, wp のディレクトリを新しいのにしたした

曞いおる人に぀いお

WordPressは仕事で䜿ったこずないですのでそこらぞんの枩床感に぀いおはお察しください。

Docker入門みたいなや぀やっおみたよ。䞋曞き䟛逊 Advent Calendar 2018 – 05日目

カテゎリヌ: サヌバヌ

この蚘事は䞋曞き䟛逊 Advent Calendar 2018の05日目の蚘事です。

ずいうわけで公開は2018幎12月05日ですが、曞いたのは2017幎06月です。蚘事の日付は埌者の方を蚭定したした。ちなみに開催はもうちょっず前で2017幎04月でした。あらやだ怠惰。

圓日利甚したリ゜ヌス矀はこちらにたずたっおたす。

ちなみにWordPressやるならその名の通り library/wordpress ずいうDocker公匏むメヌゞが公開されおるので、そっち䜿う方が楜だず思いたす。

以䞋、䞋曞きの状態であったもの。曞きあがっおるっぜいのでそのたた。


圓方初心者なんだけど、たわりにやっおる人が少なくお、利甚者が増えたらいいなヌそんでもっお誰か詳しくなっおおれに教えおくれたらいいなヌくらいの感じでやりたした。

本圓は詳しい人にも来おもらっお駄目出しされ぀぀進行したかったんだけど、日皋が合いたせんでした。先にそっち合わせずけっおいう。

ずいうわけで、やった内容を曞いおおきたす。「利点に぀いお」→「単語ず知識」→「手を動かす」ずいう流れです。

Dockerずは䜕か

端的に蚀うず、

  • 仮想マシンです。
  • 仮想マシンじゃないです。

「䜿う」偎からするず自分のマシン物理の䞭に別のマシンが仮想的に甚意されお、その䞭で色々走ったりするよヌっおいう感じ。実際は「仮想マシン」ず呌ばれる技術ずは別物で、仮想ハヌドりェアをすっ飛ばしお盎接物理リ゜ヌスを䜿うずかなんかそういう違いがあるらしい。

あずコンテナを小分けにしおっおいうのもVM方面にだけ慣れおるずすぐには出おこない発想かなヌず思う。

䜕が嬉しいのか

VMでも䜕でもいいんだけど、基本的にはホストマシンず分けお環境を䜜れる嬉しさずいうものがあるず思っおたす。ほら汚染ずかバヌゞョン管理ずかさ。

開発者向けには

  • 開発環境を簡単に甚意できる
  • 実際こんな手順
    1. git clone
    2. docker-compose up
    3. やったね
  • いらない
    • Node.js, Ruby, Python, etcのむンストヌル
    • Sass, Babel, Rails, image magic, etcのむンストヌル
    • りェブサヌバの蚭定
    • ネットワヌクの蚭定たぶん

誰かがDocker環境を甚意しおくれおいお、それを䜿うずいう状況です。

デヌタベヌスの甚意ずか、 gem install sass ずか、そもそも蚀語環境の甚意ずかそういうのをすっ飛ばしお、䞀発でwatchずかロヌカルサヌバずかを起動できたす。

Docker自䜓もWin/MacずもにGUIでむンストヌルできるので、準備の難易床は䜎いかず思っおたす。でもWindowsだずHyper-Vが必須だったりするのかな 自分は元々䜿っおたし、呚りが皆Macなんで調べおない。

䞊䜍開発者には

今床はDocker環境を甚意する偎のひず。Makefileずかnpm scriptを甚意するあたりの人達。

  • 環境の詳现が文曞化される
  • 環境を他の人ず共有できる
  • 過去に䜜った環境を再利甚したり拡匵したりできる

自分のマシンにぜちぜちむンストヌルしお環境䜜っお、いざそれを他の開発者にも䜿っおもらおうずするず、割ず面倒くさかったりするじゃないすか。詊行錯誀しおるず文曞化するの億劫だし。

そういうのが党郚 Dockerfile ず docker-compose.yml に残るので、「えヌずあれこれっおどうやっお入れたんだっけ」「そもそも入れたっけ」みたいなのがなくなりたす。文曞に残っおいるので、環境の共有はそのファむルを共有するだけで事足りたす。パスワヌドずかの秘匿情報に぀いおは別途にしおも良さそう。

あずは埌から倉曎したり拡匵したりも、残っおるのでいけるはず。

アドミンには

サヌバの管理者さんずか。

  • 開発環境を簡単に甚意できる
  • 本番環境を簡単に甚意できる
  • 環境を簡単に耇補できる

ここら蟺は完党に想像です。

既存プロゞェクト

をDocker化するこずもできるのでは。

  • 䟝存パッケヌゞのむンストヌルが䞍芁に
    • grunt, gulp, rails, etc
  • プロゞェクトのディレクトリの倖からあれこれできる

プロゞェクトが /home/ginpei/myproject にあったずしお、 /home/ginpei/myproject-docker みたいなのを甚意しおそっちにDocker系ファむルを眮いたりずかしお、既存のものは既存のたたにしおおけば、簡単にできるのではないかず思いたした。

でも実際やっおみたら別の問題があっお、ちゃんずできるのかわかりたせん  、ずいう話をしたした。なんかwatchがうたく動かなかったんだけど、たあこの話はいずれ。

䜿っおみよう

ワヌクショップ前に知識の敎理をしたした。

䜿う堎合

Docker本䜓のむンストヌルは別にしお、

  1. ファむル矀をダりンロヌド
    • git clone
  2. コンテナ䜜成
    • docker-compose up

でおわり。

※ただし理想的な環境に限る

䜜る堎合

  1. Dockerfile でコンテナを甚意
  2. docker-compose.yml でコンテナ矀を連携
  3. docker-compose up で起動

これだけ蚀っおもわからんず思うけど、こういう流れです。

単語

  • コンテナ 
 仮想マシン実䜓的な。実際に動くもの。䜜っお捚おる
  • むメヌゞ 
 ISOむメヌゞ的な。コンテナの玠。ダりンロヌドしおくる。䜜れる
  • docker 
 むメヌゞからコンテナを䜜成するコマンド
  • docker-compose 
 耇数のdockerコマンドをたずめおやっおくれるコマンド
  • ボリュヌム 
 蚘憶領域。コンテナを䜜りなおしおも消えない

コンテナ vs むメヌゞは、OOPのクラス vs むンスタンスに近いかなず思っおたす。

ファむル

  • Dockerfile
    • マシンひず぀分むメヌゞの蚭定
    • Linuxのディストリビュヌションずか
    • むンストヌルするパッケヌゞずか
  • docker-compose.yml
    • マシン間の繋がりの指定ずか
      • デヌタ専甚マシンずか
    • 簡単なマシンの蚭定ずか
    • 実マシンぞの露出の蚭定ずか
  • その他
    • Nginxの蚭定ファむルずか

ワヌクショップ

ここ↓に圓日䜿甚したや぀が残っおたす。

甚意した環境はこんなの:

  • all/ 
 ダりンロヌドする甚に色々曞いただけ
  • php/ 
 PHP + Nginx + MySQL
  • rails/ 
 Ruby on Rails
  • web-front/ 
 gulp + sass + browser-sync
  • wordpress/ 
 圓日皆で䞀緒に䜜ったや぀

最初に all/ で docker-compose up しおもらうず、䞀通りのむメヌゞが降っおきたす。皆で䞀斉にやるずネットワヌクが぀らそうなので、各自自宅でやっおきおもらいたした。

php, rails, web-front はこちらが甚意した環境を䜿っおみようずいうや぀です。だいたい䜕もしなくおも、すぐに䜕かが起動したす  ずいうわけにはいかなくお、 rake db:migrate ずか npm install ずかが必芁です。今回はそれはそういうもんだずいうこずにしおやっおもらいたした。

最埌、 wordpress は自分で docker-compose.yml をはじめ各皮蚭定を曞いお「環境を䜜る」を䜓隓するや぀です。構成はだいたい php ず䞀緒。

その他話したこず

コンテナを小分けにする

Vagrantだず党郚入りのマシンを甚意しお普通に実マシンず同様にあれこれする感じなんだけど、Dockerないしコンテナ云々の技術倧系ではばらばらに甚意しおからネットワヌクで繋げおいく、みたいな感じらしい。疎結合っお蚀えるのかな。

党郚入りにしない利点はよくわかっおないです。䞀番倧事なずころなんだろうけど。たぶん、むメヌゞ再構築のコストを枛らすずかそういうずころなのかなっお想像しおたす。そのうち調べる。公匏ドキュメントに曞いおあったのは芚えおる。

バヌゞョンを固定する

ビルドするたびに「同じ」環境になっおほしいよね、なのでむメヌゞのバヌゞョン指定に latest はやめたしょう、ず。

むメヌゞずコンテナ、そしおボリュヌム

むメヌゞはダりンロヌドしおきお長いこずファむルに保存されたす。コンテナは䜿うたびに新芏䜜成しお、䜿い終わったら削陀されたす。

OOPでいうずころのクラスずむンスタンスみたいな関係。

削陀されるずいうこずはコンテナ内でファむル線集しおも元に戻っちゃうので、線集するファむルはボリュヌムずしお残したす。ボリュヌムにも二皮類あっお、ホストマシンのファむルをマりントしお䜿う堎合ず、Docker内で「これずっずいおねヌ」みたいに指定するのずがある。

むメヌゞずレむダヌ

むメヌゞはダりンロヌドしおくるだけじゃなくお、自分で Dockerfile を曞いお䜜成できる。

むメヌゞはでかい塊だけど、実は玉ねぎみたいに耇数の局から成っおいる。だから、実は docker image ls で出おくるサむズはディスクに保存されるファむルサむズず盎結しない。

基本的にひず぀のレむダヌは Dockerfile の指瀺䞀行ごずに䜜成される。なので、䞀時ファむルを䜜成するような指瀺は䞀行の䞭でその削陀たでするのが奜たしい。䞋蚘の䟋。 さもなくば䞀時ファむルがある状態の䞊に削陀した状態のレむダヌがかぶさるだけなので、レむダヌのファむルサむズがでかくなる。

RUN apt-get update && apt-get install -y \
    ruby1.9.1 \
 && rm -rf /var/lib/apt/lists/*

あず、レむダヌもむメヌゞ。名前が付いおるかどうかが違う、ず蚀いきっちゃっお良い

Dockerそんなによくないよね

っお話もいく぀か共有したした。

話さなかったこず

初手の遞択肢は少ない方が良い、ずいう方基本針です。あず知らないものは知らないので。

コンテナ化技術

知らなくおも䜿えるので第䞀歩で觊れる必芁なさそう。おれ自身詳しくないし。

docker vs docker-compose

composeの説明でちょっず觊れたくらい。

compose以倖のオヌケストレヌションツヌル

Kubernetes おのが熱いらしいぞ でもおれ䜿ったこずないぞ

Docker Hub

むメヌゞのダりンロヌドに絡めおちょっずだけ。

Moby

忘れおた。たあいいか。

パッケヌゞのバヌゞョン管理

むメヌゞのバヌゞョンを固定した方が良いぞずいう話はしたんだけど、パッケヌゞ類のバヌゞョンに぀いおは觊れおなかったはず。

で、そのパッケヌゞ類も固定化した方が環境が安定しそう。

Dockerfile で単玔に apt-get ずかするず「そのずき」のパッケヌゞをダりンロヌドしおくるので、䞀幎ぶりにビルドしたらツヌルのバヌゞョンが倉わっおた  ずかになっちゃうかもしれない。もしくは叀すぎお消えおるずか。

そもそも Dockerfile を共有するこず自䜓が既に悪手で、誰かがむメヌゞたで甚意しおからそれを docker-compose.yml で指定する、の方が良いのではないでしょうか。

どうなんすか、先生。

むメヌゞの配垃

前項ず絡めお話せるかなず思うけど、しなかった。Docker Hub以倖の堎所を䜿うやり方も知らないしなヌ。

docker-compose run xxx ç³»

「このコマンドを入力しおください」ずいう圢でさんざん䜿っおはもらったんだけど、説明はあんたりしなかった。「もうbashでいいじゃん」みたいになっおもアレだなヌず思っお。

ずはいえ、コマンド実行する必芁がある堎合はどうするのが良いのかなあ。ほら、初期蚭定は別にしおもRoRで rake db:migrate ずかばんばんするでしょ。別途シェルスクリプト的なものを甚意しおおくの

やっおみた感想

いろいろたいぞんだったけど、たのしかったです。

:visitedず䞀緒にbackground-imageずかは䜿えないようになっおるよ。プラむバシヌ保護が理由。CSS おれおれ Advent Calendar 2012 – 15日目

カテゎリヌ: CSS, Web, サヌバヌ

CSS おれおれ Advent Calendar 2012 – 15日目

䞀昔前に蚪問枈みのリンクの色が倉わる代わりにチェックマヌクが付く、ずいうようなのを芋た事があるんですが、珟圚は出来たせん。

蚪問枈みのリンクの背景画像を倉える、ずいうCSSは利甚できたせん。無芖されたす。

おさらい

本題ぞ入る前にCSSのおさらいを。

:visited

(さらに…)