![](/img/trans.png)
[英]How to run Vue Dev Server within a Docker container on a custom domain?
[英]How to run docker container with custom domain on localhost
我通常將 Docker 用於桌面,我需要同時在多個項目中工作。
所以我想用單獨的 URL 設置單獨的項目,比如 xampp 上的虛擬主機。 例如項目 A = http://project-a.test ,項目 B = http://project-b.test
我曾經嘗試過研究並設置它分離端口,但仍然無法像上面那樣將其映射為域。
是否可以設置自定義域? 如果是這樣,請逐步解釋如何通過 docker-compose.yml(和/或使用 Dockerfile)和 apache 服務器進行設置。 提前致謝。
這是我設置項目的示例-a 這里是我的 docker-compose.yml
version: "3"
services:
web:
container_name: simplephp56
build:
context: .
dockerfile: ${DOCKER_FILE}
ports:
- "${HTTP_PORT}:80"
- "${HTTPS_PORT}:443"
- "25:25"
volumes:
- "${WORKING_DIR}:/var/www/html"
restart: always
我的 .env
DOCKER_FILE=Dockerfile56
WORKING_DIR=./code
HTTP_PORT=8000
我的 000-default.conf
<VirtualHost *:8000>
ServerAdmin webmaster@simplephp56.com
ServerName simplephp56.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我的 Dockerfile(名為 Dockerfile56)
FROM php:5.6-apache
RUN buildDeps=" \
libmcrypt-dev \
libcurl4-gnutls-dev \
libicu-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libxml2-dev \
libc-client-dev \
libssh2-1-dev \
libbz2-dev \
redis-server \
git \
" \
&& apt-get update && apt-get install -y $buildDeps \
&& pecl install ssh2 \
&& docker-php-ext-configure intl \
&& docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) calendar iconv curl intl xml soap session mcrypt opcache pdo pdo_mysql mysqli mbstring json hash zip fileinfo xmlrpc xmlwriter bcmath ctype sockets ftp gd dom bz2 tokenizer \
&& docker-php-ext-enable intl xml json ssh2
COPY ./config/000-default.conf /etc/apache2/sites-available/000-default.conf
我正在運行類似的設置。 很可能,您的設置問題在於,您只能通過單個應用程序在同一端口上偵聽。 您可以設置多個域以解析為127.0.0.1 (aka localhost)
,但您不能讓多個 HTTP 服務器監聽端口80
。
您可以通過使用另一個代理網絡服務器容器偵聽端口80
並根據傳入請求的主機名將請求重定向(或更准確地說是重寫)到實際容器來克服此問題。
所以,
project-a.test
和project-b.test
設置為在hosts
文件中解析為127.0.0.1
。project-a.test
和project-b.test
的 docker 容器在不同於80
的端口上偵聽。nginx-proxy
類的東西將請求重寫到實際容器的正確端口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.