我有一个Docker容器,在端口80上运行PHP,Apache,Composer和Laravel。在这个容器中,它在端口8000上运行一个laravel应用程序。此应用程序位于/var/www.我已经在Dockerfile中公开了端口,并在docker-compose.yml中绑定了它们。我是PHP和laravel的初学者,所以我不知道发生了什么。
Dockerfile
FROM php:8.2-apache
WORKDIR /var/www/html
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN apt-get update && apt-get install -y git curl zip unzip libzip-dev
RUN composer global require laravel/installer
ENV PATH="/root/.composer/vendor/bin:${PATH}"
RUN apt-get update && apt-get upgrade -y
RUN echo 'alias run="php artisan serve"' >> ~/.bashrc
EXPOSE 80 8000
docker-compose.yml
version: '3'
services:
dw2_apache_php:
build: .
container_name: dw2_apache_php
working_dir: /var/www/
volumes:
- .:/var/www
ports:
- 80:80
- 8000:8000
我期望当我暴露端口并绑定它们时,它会起作用。
1条答案
按热度按时间k2arahey1#
当你想运行你的docker容器时,你需要将应用运行的端口Map到你公开的端口。
如果运行localhost,我通常会这样做
3000表示您将在浏览器中输入的端口
8080表示您在容器中暴露的端口
IMAGE_ID,您需要填写适当的值
编辑:
此外,除非您有特定的原因,否则不应该需要这一行
我会删除它,只是添加这个后,曝光