我第一次在 VPS 服务器中为我的项目配置 docker。我成功地在本地机器上运行了它,但在服务器上,所有服务都在运行,但无法通过浏览器访问。我检查了所有端口映射、防火墙配置以及大量博客和教程,但都帮不上忙。
以下是我的项目的结构:
- html/
- Dockerfile
- docker-compose.yml
- 项目(即 oms)
- 项目文件
这是我的配置文件, docker-compose.yml
version: '3'
services:
oms:
build:
context: . # automatically finds Dockerfile
dockerfile: Dockerfile
container_name: oms
ports:
- 8080:80
volumes:
- "./oms:/var/www/html/oms"
links:
- db
db:
image: mariadb:10.6.13
restart: always
environment:
- MARIADB_ROOT_PASSWORD=root #username = root
volumes:
- db:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8001:80
environment:
- PMA_HOST:db
- PMA_PORT:3306
volumes:
db:
这是我的Dockerfile
FROM php:8.1-apache
RUN apt-get update -y \
&& apt-get install -y \
libpng-dev \
libjpeg-dev \
&& docker-php-ext-configure gd --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& apt-get install -y default-mysql-client \
&& docker-php-ext-install mysqli \
&& docker-php-ext-enable mysqli \
&& apt-get install -y git \
&& apt-get install -y nano \
&& apt-get install -y iputils-ping
# Give permissions to www-data user
RUN chown -R www-data:www-data /var/www/html
# Enable rewrite module
RUN a2enmod rewrite
# Copy the project files for projects(ie office1, office2..)
COPY ./ /var/www/html/
# Set the working directory
WORKDIR /var/www/html
# Restart Apache service
CMD ["apache2-foreground"]
当我尝试使用 URL http://ip:8001 或 http://ip:8080 通过浏览器访问时,它会抛出此错误
我使用以下命令检查了防火墙是否阻止了该端口:
- telnet vps_ip 8080
- telnet vps_ip 8001
两个端口均已连接
另外,当我登录 VPS 服务器并在终端中 curl -i localhost:8001 时,它会显示内容,但不在浏览器中显示。我不知道我错过了什么。有人能帮帮我吗?