2026年10月18日の日記 📖
七海
今日のメモ
# 今日やったこと
■ Docker完全ガイド 開発/本番環境運用に備えて
∟ 1. Docker入門とDockerfileの基本構文
∟ 2. レイヤーキャッシュと効率的なビルド
∟ 3. docker-composeでマルチコンテナを動かそう
∟ 4. 開発環境と本番環境の使い分け/運用戦略
∟ 5. Railsアプリケーションのコンテナ化ハンズオン
# 今日理解できたこと
■ Dockerの基本的な仕組み
- **Dockerfile**:イメージを作成するための設計図
- **イメージ**:アプリの実行に必要な環境をまとめたもの
- **コンテナ**:イメージをもとに作成される実行環境
- **Docker Compose**:複数のコンテナをまとめて定義・管理する仕組み
■ レイヤーキャッシュとDockerfileの最適化
Dockerはビルド時にキャッシュを再利用することで、不要な処理を省略できる。
特に重要なのは、変更頻度の低い処理を先に、変更頻度の高い処理を後に配置すること。
また、不要な一時ファイルは同じ `RUN` 命令内で削除することで、イメージの肥大化を防げる。
■ 開発環境と本番環境の管理
開発環境では変更の即時反映やデバッグのしやすさ、本番環境では軽量化・セキュリティ・安定稼働が重視される。
環境別のDockerfile管理方法2種類
- **マルチステージビルド**:1つのDockerfile内で開発用・本番用などのステージを分ける
- **ファイル分割**:`Dockerfile.dev` と `Dockerfile.prod` のように用途ごとに分ける
環境変数も `.env.development` や `.env.production` などで分離できる。
APIキーやパスワードなどの機密情報は、Gitの管理対象に含めず、安全に管理することが重要。
■ Procfile.devとForeman
`Procfile.dev` にRailsサーバーとJavaScriptのビルド処理を定義した。
`./bin/dev` からForemanを実行することで、複数のプロセスを同時に起動できる。
Docker Composeはコンテナを管理し、Foremanはコンテナ内の複数プロセスを管理する
■ Docker環境の終了時
`docker compose down` と `docker compose down -v` は異なり、`-v` を付けると名前付きボリュームも削除されることに注意が必要。
# まだ理解できていないこと
- Dockerfileやcompose.ymlを、教材なしで一から設計できるほどには理解できていない
- Docker環境で問題が起きた際、自分で原因を判断して適切に修正する力はまだ不十分
# 次にやること
- 卒業制作の開発環境を確認し、今回学んだ設定やコマンドと結びつけて理解する
- AIに修正を依頼する場合も、自分でも調べて、提案された変更の目的と影響を理解してから実行する
# 感想など
これまでDocker Desktopを使った環境構築や、Docker Composeでのアプリ起動は何度も経験していたけど、今回の学習で初めて、それぞれのファイルやコマンドが担っている役割を体系的に理解できた。
特に印象に残ったのはDockerfile最適化テクニックと、開発環境・本番環境で設定を使い分ける方法
これまでは用意された環境を動かすことが中心だったけど、環境の作り方にも設計上の意図があるんだなとわかった。
また、AI活用の心得を読んで、
自分が何をしているのか理解し、判断する姿勢を持つことが大切だと改めて感じた。
ただAIに正解を出してもらうのではなく、まずは正しく動くものを参考にしながら、自分でコードを読み、仕組みや設計意図を理解する力を身につけたい。
今後の卒業制作でも、効率化のためにAIを活用しながら、コードの理解と判断力を身につけることを意識していきたい
■ Docker完全ガイド 開発/本番環境運用に備えて
∟ 1. Docker入門とDockerfileの基本構文
∟ 2. レイヤーキャッシュと効率的なビルド
∟ 3. docker-composeでマルチコンテナを動かそう
∟ 4. 開発環境と本番環境の使い分け/運用戦略
∟ 5. Railsアプリケーションのコンテナ化ハンズオン
# 今日理解できたこと
■ Dockerの基本的な仕組み
- **Dockerfile**:イメージを作成するための設計図
- **イメージ**:アプリの実行に必要な環境をまとめたもの
- **コンテナ**:イメージをもとに作成される実行環境
- **Docker Compose**:複数のコンテナをまとめて定義・管理する仕組み
■ レイヤーキャッシュとDockerfileの最適化
Dockerはビルド時にキャッシュを再利用することで、不要な処理を省略できる。
特に重要なのは、変更頻度の低い処理を先に、変更頻度の高い処理を後に配置すること。
また、不要な一時ファイルは同じ `RUN` 命令内で削除することで、イメージの肥大化を防げる。
■ 開発環境と本番環境の管理
開発環境では変更の即時反映やデバッグのしやすさ、本番環境では軽量化・セキュリティ・安定稼働が重視される。
環境別のDockerfile管理方法2種類
- **マルチステージビルド**:1つのDockerfile内で開発用・本番用などのステージを分ける
- **ファイル分割**:`Dockerfile.dev` と `Dockerfile.prod` のように用途ごとに分ける
環境変数も `.env.development` や `.env.production` などで分離できる。
APIキーやパスワードなどの機密情報は、Gitの管理対象に含めず、安全に管理することが重要。
■ Procfile.devとForeman
`Procfile.dev` にRailsサーバーとJavaScriptのビルド処理を定義した。
`./bin/dev` からForemanを実行することで、複数のプロセスを同時に起動できる。
Docker Composeはコンテナを管理し、Foremanはコンテナ内の複数プロセスを管理する
■ Docker環境の終了時
`docker compose down` と `docker compose down -v` は異なり、`-v` を付けると名前付きボリュームも削除されることに注意が必要。
# まだ理解できていないこと
- Dockerfileやcompose.ymlを、教材なしで一から設計できるほどには理解できていない
- Docker環境で問題が起きた際、自分で原因を判断して適切に修正する力はまだ不十分
# 次にやること
- 卒業制作の開発環境を確認し、今回学んだ設定やコマンドと結びつけて理解する
- AIに修正を依頼する場合も、自分でも調べて、提案された変更の目的と影響を理解してから実行する
# 感想など
これまでDocker Desktopを使った環境構築や、Docker Composeでのアプリ起動は何度も経験していたけど、今回の学習で初めて、それぞれのファイルやコマンドが担っている役割を体系的に理解できた。
特に印象に残ったのはDockerfile最適化テクニックと、開発環境・本番環境で設定を使い分ける方法
これまでは用意された環境を動かすことが中心だったけど、環境の作り方にも設計上の意図があるんだなとわかった。
また、AI活用の心得を読んで、
自分が何をしているのか理解し、判断する姿勢を持つことが大切だと改めて感じた。
ただAIに正解を出してもらうのではなく、まずは正しく動くものを参考にしながら、自分でコードを読み、仕組みや設計意図を理解する力を身につけたい。
今後の卒業制作でも、効率化のためにAIを活用しながら、コードの理解と判断力を身につけることを意識していきたい
visibility
公開