Docker + nginx + slim

Docker + nginx + slim

我是 Docker 的新用户。我想做的是(在我的 Windows PC 上)设置 Docker 平台,该平台带有 nginx 服务器和该服务器上的 slim 框架,这样我就可以“托管”一个简单的“hello世界”页面。 我的问题是:我应该创建一个包含 Nginx 的容器并在该容器内安装 Slim 框架吗? 或者我应该创建两个不同的容器(一个用于 Nginx,一个用于 Slim)。如果是这样,那两者如何沟通?

不管怎么说,首先我想了解这个“构建”的“架构”,然后再了解如何去做。

提前致谢

你可以使用两个容器,使用docker-compose连接slim和nginx,像这样:

docker-compose.yaml

version: "3.8"

services:
  php:
    container_name: slim
    build:
      context: ./docker/php
    ports:
      - '9000:9000'
    volumes:
      - .:/var/www/slim_app

  nginx:
    container_name: nginx
    image: nginx:stable-alpine
    ports:
      - '80:80'
    volumes:
      - .:/var/www/slim_app
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

./docker/php

中的 DOCKERFILE
FROM php:7.4-fpm

RUN docker-php-ext-install ALL_YOUR EXTENSIONS

WORKDIR /var/www/slim_app

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

Docker /docker/nginx/default.conf

中的 nginx
server {

    listen 80;
    index index.php;
    server_name localhost;
    root /var/www/slim_app/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;        
        internal;
    }

    location ~ \.php$ {
        return 404;
    }

}

只执行容器 docker-compose up -d 前往 http://localhost/