我已经用Dockerfile定义了laravel镜像,像这样...
FROM php:7.2-fpm
# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update -y && apt-get install -y openssl zip unzip git libpng-dev
# Install extensions
RUN docker-php-ext-install gd
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Copy existing application directory contents
COPY . /var/www
# Copy existing application directory permissions
COPY --chown=www:www . /var/www
# Change current user to www
USER www
# Expose port 8181 and start php-fpm server
EXPOSE 8181
CMD ["php-fpm"]
我像这样安装了掌舵的nginx入口...
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/proxy-body-size: 10m
ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/load-balancer: "ip-hash"
spec:
tls:
- hosts:
- api.myweb.com
- www.myweb.com
secretName: secret
rules:
- host: api.myweb.com
http:
paths:
- backend:
serviceName: backend-golang
servicePort: 8080
- host: www.myweb.com
http:
paths:
- backend:
serviceName: frontend-laravel
servicePort: 8181
使用此配置,当我访问www.myweb.com时,它将返回502 Bad Gateway
我应该告诉nginx根文件夹位于/var/www/public
上吗???我该怎么办?
我应该告诉nginx索引文件在index.php
上吗???我该怎么办?
我的参考是这个https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose。但是我不想使用自定义nginx,而是想使用掌舵的nginx入口。.
谢谢...
答案 0 :(得分:1)
但是我不想使用自定义nginx,而是想使用掌舵的nginx入口。
我非常确定您在这里将两个不同的nginx-es进行了合并:入口控制器的nginx专为进行虚拟主机上游路由而设计,并且只是许多入口控制器实现中的一种。您故事中的另一个nginx负责处理位于PHP cgi-bin上游的“ HTTP”位(实际上是“ fpm”)。在这两种情况下,您都不必使用nginx,可以使用其他服务器,但是在您的情况下它们都是nginx的事实,我认为这会引起混乱。
由于(AFAIK)fpm的亮度不足以自行完成操作,因此您将希望在php容器内使用一个“本地” nginx来处理这些HTTP位。
我确实想知道您是否可以使用nginx Ingress注释将必要的location {}
块注入到入口控制器的nginx的配置文件中,但是我不确定nginx是否需要能够查看任何文件在Pod磁盘上正常工作,在这种情况下,注释欺骗将无法正常工作。
您辛苦了,因为与整体内存和CPU预算相比,在群集中运行单独的nginx可能是舍入错误,并且肯定已经使您(和我)付出了更多葡萄糖会思考这种情况,而不是仅仅创建nginx.conf并完成它。