docker - 来自 docker 外部的 nginx 中的虚拟主机
问题描述
我正在尝试使用 nginx + php-fpm 在 docker 中运行一个项目。Ubuntu 20.10。
标准示例中有 docker-compose:
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./hosts:/etc/nginx/conf.d
- ./sites:/var/www
- ./logs/nginx:/var/log/nginx
links:
- php
php:
build: ./images/php
links:
- mysql
volumes:
- ./sites:/var/www
mysql:
image: mysql
ports:
- "3306:3306"
volumes:
- /etc/mysql:/etc/mysql
- ./logs/mysql:/var/log/mysql
- ./mysql:/var/lib/mysql
- ./mysql-files:/var/lib/mysql-files
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: sait
本地主机被提升,在主机中我可以指定虚拟主机并访问它们。如何进行这样的配置从外部引用虚拟主机?A 记录通过我正确获取到默认项目的外部 IP 地址和域名 - ERR_CONNECTION_REFUSED 进行注册。端口对ufw开放,通过外部ip正常进入。
nginx domain.conf:
server {
listen 80;
index index.php index.html;
server_name ________ www.___________;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/________________;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Dockerfile:
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libonig-dev \
libzip-dev \
libmcrypt-dev \
&& pecl install mcrypt-1.0.3 \
&& docker-php-ext-enable mcrypt \
&& docker-php-ext-install -j$(nproc) iconv mbstring mysqli pdo_mysql zip \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
WORKDIR /var/www
CMD ["php-fpm"]
须藤 lsof -nP -i | 听听
systemd-r 605 systemd-resolve 13u IPv4 26775 0t0 TCP 127.0.0.53:53 (LISTEN)
cupsd 667 root 6u IPv6 29160 0t0 TCP [::1]:631 (LISTEN)
cupsd 667 root 7u IPv4 29161 0t0 TCP 127.0.0.1:631 (LISTEN)
container 777 root 8u IPv4 31394 0t0 TCP 127.0.0.1:43289 (LISTEN)
sshd 803 root 3u IPv4 30762 0t0 TCP *:22 (LISTEN)
sshd 803 root 4u IPv6 30764 0t0 TCP *:22 (LISTEN)
docker-pr 2342 root 4u IPv6 40932 0t0 TCP *:3306 (LISTEN)
docker-pr 2521 root 4u IPv6 43169 0t0 TCP *:443 (LISTEN)
docker-pr 2535 root 4u IPv6 44053 0t0 TCP *:80 (LISTEN)
解决方案
推荐阅读
- c# - MVC 视图模型中的自定义显示名称
- javascript - 如何动态显示数组数组?
- stenciljs - 模板对象属性未设置,当它们通过 HTML 字符串提供时
- css - 如何修复 IE 图像和列 flexbox 错误?
- tensorflow - 为什么使用 TensorRT 使用 INT8 推理输出更多数据
- php - ACF - 更新字段名称和键
- r - dplyr 中的 boxplot.stats 与组
- c++ - 问题:具有新类数据类型的二维向量(嵌套向量)
- c# - 将 IsWix 模板添加到 Visual Studio 2015
- polymer - Braintree 托管字段在 iframe 中不起作用