我使用Nginx,PHP-7.4-fpm,PhpMyAdmin和MariaDB创建了docker-compose.yml文件,我的docker-compose.yml的执行已成功部署,但是Nginx容器有错误:
nginx:/etc/nginx/nginx.conf:1
中不允许使用“ emerg”“服务器”指令
.docker / docker-compose.yml:
version: '3'
services:
nginx:
image: nginx:alpine
volumes:
- ../:/code
- ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./logs:/var/log/nginx
ports:
- "80:80"
depends_on:
- php
php:
build:
context: './config/php/'
args:
PHP_VERSION: ${PHP_VERSION}
depends_on:
- mariadb
volumes:
- ../:/code
- ./config/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
ports:
- "9000:9000"
mariadb:
image: mariadb:${MARIADB_VERSION}
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE=${MARIADB_DATABASE}
- MYSQL_USER=${MARIADB_USER}
- MYSQL_PASSWORD=${MARIADB_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
volumes:
- ./database:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "${PHPMYADMIN_HTTP_PORT}:80"
depends_on:
- mariadb
environment:
- MYSQL_USER=${MARIADB_DATABASE}
- MYSQL_PASSWORD=${MARIADB_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
.docker / config / nginx / nginx.conf:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name monsite.local;
root /code;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
我不明白为什么会出现此错误,请您能帮我吗?
提前谢谢
答案 0 :(得分:0)
在您的上下文中,您需要将服务器包装在http块中。或移动配置文件,而不是替换默认配置文件,而是替换/etc/nginx/conf.d/中的默认服务器配置,因此您可以使用类似
的方法 - ./nginx.conf:/etc/nginx/conf.d/default.conf
用于nginx的卷。这将重写您的默认服务器配置。 如果您打算使用多个配置文件,也可以将其复制到启用了站点的文件夹中。
或者您可以通过使用http块包装它来修改nginx配置