コンテナ化の流れの一環か、バックエンドとフロントエンド、あるいは管理画面とサービス画面など、複数のHTTP等サービスを同時に立ち上げた状態で開発を進めることが増えてきた感じがあります。
そうした際、ポート番号を分けて環境を作るのはよくある方法かと思います。
docker composeの例だと下記のような感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version: '3' services: backend: image: php:apache ports: - 8081:80 volumes: - ./backend/src:/var/www/html frontend: image: php:apache ports: - 8082:80 volumes: - ./frontend/src:/var/www/html |
- http://localhost:8081/
- http://localhost:8082/
そういうときは、ループバックアドレスを追加して活用することで良い感じに実現することができます。
一般にループバックアドレスは 127.0.0.1 で、ホスト名は localhost が知られていますが、実は任意に追加することができるようです!
ループバックアドレスを追加してみます。
1 2 |
% sudo ifconfig lo0 alias 127.0.0.2 % sudo ifconfig lo0 alias 127.0.0.3 |
加えて、名前解決も追加してみます。
1 2 3 |
% sudo vi /etc/hosts 127.0.0.2 backend.example.jp 127.0.0.3 frontend.example.jp |
すると、前述の例は次のように改善できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version: '3' services: backend: image: php:apache ports: - '127.0.0.2:80:80' volumes: - ./backend/src:/var/www/html frontend: image: php:apache ports: - '127.0.0.3:80:80' volumes: - ./frontend/src:/var/www/html |
- http://backend.example.jp/
- http://frontend.example.jp/
おわりに
先般紹介記事もありましたがGMOSSPはGCP環境へ移行しました。こんにちはGMOアドマーケティングのy.yです。 2021年から約1年がかりでGoocle Cloud Platform(GCP)に移行したので現在(2022年3月時点)のGMO SSPで利用している主なGCP各種サービスと移行してよかったことを紹介したいと思います。 広告配信Cloud Run(PHP)Cloud LoggingCloud Memorystore for RedisCloud Storage 管理画面BigQueryCloud Run(PHP)Cloud LoggingCloud StorageCloud Vision バッチBigQueryCloud Run(Go)Cloud LoggingCloud SchedulerCloud Storage APICloud Run(Go)※App Engine Flexibleから切替中Cloud Logging 広告...
アプリケーションはコンテナ対応され進化しました。開発環境もコンテナ環境で柔軟に開発できるようになりました。
その過程ではドメインの問題でコンテナ間の通信がうまくいかないなどありましたが一つずつ解決してきました。今回はそうした中で得られた知見の一つをご紹介しました。
引き続き精進いたします!