我试图测试我的php服务器运行应用程序之前部署在AWS上(第一次)不适合我本地与我的docker配置。
我用途:
docker build -f docker-configs/php/Dockerfile -t php-service .
docker run -p 9000:9000 php-service
localhost:9000没有响应
产品展示:
[2023 - 08 - 23 08:37:53]注意:fpm正在运行,pid 1
[2023 - 08 - 23 08:37:53]注意:准备好处理连接
但无法连接。
我的Dockerfile
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
git \
unzip \
libicu-dev \
libpq-dev \
wget \
&& apt-get install -y \
librabbitmq-dev \
libssh-dev \
sqlite3 \
libsqlite3-dev \
&& docker-php-ext-install \
bcmath \
sockets \
pdo pdo_mysql pdo_sqlite \
&& pecl install amqp \
&& docker-php-ext-enable amqp
# Installing Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && composer --version
RUN apt-get -y install cron default-mysql-client
WORKDIR /app
# Copy application files into the container
COPY . /app
# Expose port 9000 for the PHP-FPM server
EXPOSE 9000
# The startup command to run PHP-FPM
CMD ["php-fpm"]
此外,我发现- PHP-FPM不直接处理HTTP请求;它需要一个像Nginx或Apache这样的Web服务器来将HTTP请求转换为PHP-FPM可以处理的FastCGI请求。
所以我想我需要的图像,我可以访问HTTP请求?
我的docker-compose.yaml
文件
version: '3.8'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- "./docker-configs/nginx.conf:/etc/nginx/conf.d/default.conf"
- ".:/app:cached"
php:
build:
context: ./docker-configs/php
volumes:
- "./docker-configs/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- ".:/app:cached"
environment:
PHP_IDE_CONFIG: "serverName=Docker"
database:
image: nouchka/sqlite3:latest
stdin_open: true
tty: true
volumes:
- ./sqlite-data:/var/lib/sqlite
有人能帮帮忙吗?谢谢
1条答案
按热度按时间bf1o4zei1#
是的,你是对的。FPM 图像中没有Web服务器,你需要一个外部Web服务器(nginx或Apache)来“接受”来自外部的请求并将其“转发”到应用程序。