![](/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.