簡體   English   中英

對 docker-compose web 應用程序使用與 localhost 不同的主機名/url

[英]Use different hostname / url than localhost for docker-compose web application

總結:2 個獨立的應用程序,都使用 docker-compose,我如何才能同時使用http://app-1.testhttp://app-2.test

描述:我覺得我錯過了一些非常簡單的東西。 我有 2 個 php-fpm(通過 nginx)應用程序,它們都由類似的 docker-compose 設置運行,有點像:

# docker-compose.yaml
version: '3'

services:
  app:
    build:
      context: .
      dockerfile: docker/Dockerfile
    container_name: app_1
    tty: true
    depends_on:
      - db
      - dbtest
    working_dir: /var/www
    volumes:
      - ./:/var/www

  webserver:
    image: nginx:stable
    container_name: app_1_webserver
    restart: always
    ports:
      - "80:80"
    depends_on:
      - app
    volumes:
      - ./:/var/www
      - ./docker/app.conf:/etc/nginx/conf.d/default.conf
    links:
      - app
# ...

在我的/etc/hosts ,我可以添加類似

127.0.0.1 app-1.test

現在我可以通過瀏覽器調用app-1.test來調用該應用app-1.test

第二個也有類似的設置,但是當然上不去了,因為80端口被屏蔽了。 我當然可以更改端口,但隨后 url 將類似於app-2.test:81而不是app-2.test 我該怎么做才能在不同的本地主機名下運行第二個應用程序? 還是使用不同的端口是最好的方法?

你不能。 您可以做的是在您的圖像(第三張圖像)前面添加一個“路由器”,它根據主機名進行路由(代理傳遞)。

Apache 或 Nginx 通常用於這些類型的事情。

例如使用 apache 服務器https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html

<VirtualHost *:80>
    ServerName app-1.test
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://image1:80/
    ProxyPassReverse / http://image1:80/
    ErrorLog /var/log/apache2/error.log
    LogLevel info
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerName app-2.test
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://image2:80/
    ProxyPassReverse / http://image2:80/
    ErrorLog /var/log/apache2/error.log
    LogLevel info
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

現在您可以在 /etc/hosts 文件中的同一個 IP 上添加兩個名稱,服務器可以根據提供的主機名( ServerName )進行內部路由。

http://image1:80/ (及其類似的)引用應該更改為 docker-compose.yml 中指定的 docker 內部 dns

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM