株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。
DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら弊社HPからご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。
- プロジェクトでRailsエンジニアが足りなくて困っている
- Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
- オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい
また、Railsエンジニアも募集しておりますので、興味がありましたら弊社HPからご連絡いただけますと幸いです。
前提
雰囲気でDockerやDocker Composeを使っていたので、少し詳細を調べてみました。
折を見て追記していきます。
CMDとRUNとENTRYPOINTの違いについて
以下の記事が詳しかった。
CMDとENTRYPOINTの使い分けについて
以下の記事が詳しかった。
実際にコマンドを実行して試している記事もあった。
DockerのEXPOSEについて
以下の記事が詳しかった。
ただ、EXPOSEだけでは、ポートは公開されません。つまり、使用者からコンテナにはアクセスできません。後に説明する”docker run -p”コマンドを使用し、公開用のポートとEXPOSEで指定したポートを紐づけることで、公開されるようになります。
そのため、EXPOSEはイメージの作者とコンテナ実行者の両者に対して、ドキュメントのような役割をします。
Docker Composeでの各コンテナの通信について
各コンテナはdocker-compose.ymlで書いたportで通信しているのではなく、Docker Composeの機能でdocker-compose.ymlの中に書いたservice名で勝手に名前解決してくれる。
Railsの場合だと、database.yml
にdocker-compose.ymlで指定したサービス名をhostに設定するだけで通信できるのはこれが理由となる。
CPUのアーキテクチャについて
DockerはホストマシンのCPUアーキテクチャを参照して、Docker Hubからイメージを引っ張ってくる。
M1 Macの場合にECS用にビルドが必要になる場合などは注意する。