実現したいこと
Docker環境勉強中の初心者です。
docker desktop にてコンテナを3つ作りました。
コンテナは下記になります
・apacheコンテナ
・mysql
・laravel
・express
やりたい事は下記になります。
①クライアントがサービスに接続しにくる
②apacheのコンテナで受け取ってURLに合わせてリバースプロキシを利用(phpかnode.jsコンテナへ転送)
③コンテナで処理をする
④結果をapacheのコンテナへ返却
⑤apacheのコンテナからクライアントへレスポンスを返却
と上記のようにしたいです。
また、ユーザーの接続は「http://test.jp」みたいなものでポート番号等していしなくてもいいようにしたいです。
発生している問題・分からないこと
apacheのコンテナでURLに合わせてリバースプロキシをしたい。
でも、実際に添付のソースで作成した環境ですと接続に行くとコンテナが起動しません。
内容はポートの重複が発生してコンテナが起動できないとなります。
該当のソースコード
composer.yml
1version: '3.8' 2 3services: 4 express: 5 build: 6 context: ./express 7 dockerfile: Dockerfile 8 container_name: express_server 9 working_dir: /app/express 10 volumes: 11 - ./express:/app/express 12 environment: 13 - CHOKIDAR_USEPOLLING=true 14 command: ["npx", "nodemon", "--exec", "npx ts-node", "./src/index.ts"] 15 networks: 16 test-network: 17 ipv4_address: 172.18.0.4 18 19 laravel: 20 build: 21 context: ./laravel 22 dockerfile: Dockerfile 23 container_name: laravel_server 24 restart: unless-stopped 25 working_dir: /var/www 26 volumes: 27 - ./laravel:/var/www 28 - ./laravel/php.ini:/usr/local/etc/php/conf.d/php.ini 29 - ./logs:/var/log 30 environment: 31 - DB_HOST=mysql 32 - DB_DATABASE=test 33 - DB_USERNAME=test_user 34 - DB_PASSWORD=test_user 35 depends_on: 36 - mysql 37 command: sh -c "php artisan migrate --force && php artisan serve --host=0.0.0.0 --port=9000" 38 networks: 39 test-network: 40 ipv4_address: 172.18.0.5 41 42 mysql: 43 image: mysql:8.0 44 container_name: mysql_server 45 environment: 46 MYSQL_ROOT_PASSWORD: testpass 47 MYSQL_DATABASE: test 48 MYSQL_USER: test_user 49 MYSQL_PASSWORD: test_user 50 volumes: 51 - mysql_data:/var/lib/mysql 52 - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql 53 ports: 54 - '3306:3306' 55 networks: 56 test-network: 57 ipv4_address: 172.18.0.2 58 59 apache: 60 image: httpd:2.4 61 container_name: apache_reverse_proxy 62 restart: unless-stopped 63 ports: 64 - "80:80" # HTTP用(ポート変更) 65 #- "443:443" # HTTPS用(必要に応じて有効化) 66 volumes: 67 - ./apache/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf 68 - ./apache/conf/:/usr/local/apache2/conf/ 69 #- ./apache/certs/:/usr/local/apache2/conf/certs/ # SSL証明書用(必要に応じて有効化) 70 depends_on: 71 - express 72 - laravel 73 networks: 74 test-network: 75 ipv4_address: 172.18.0.1 76 77 78networks: 79 app-network: 80 driver: bridge 81 ipam: 82 config: 83 - subnet: 172.18.0.0/16 84
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ポートの重複でコンテナが上手く動きませんでした。
補足
どうか皆様の知恵をお借りしたいです。
よろしくお願いします。
2024/11/01 追記
エラー内容を記載します。
申し訳ありません。
他に必要なエラー内容があればご指摘いただけますと有難いです。
[+] Stopping 1/0
✔ Container apache Stopped 0.0s
- Container laravel_server Stopping 0.1s
- Container mysql Stopping 0.1s
- Container express Stopping 0.1s
Error response from daemon: Address already in use

回答1件
あなたの回答
tips
プレビュー