Создание блога

AnrDaemon

Продвинутый новичок
В смысле? У тебя что, нет отдельного каталога в проекте, в котором у тебя вебрут находится?
WORKDIR /var/www/html COPY ./ /var/www/html/
Тот же самый вопрос.
/var/www/html - это вебрут. Почему ты туда PHP файлы копируешь?
 

miketomlin

Новичок
/var/www/html - это вебрут.
Судя по конфигу сервера, у него корень глубже (html/public).

root /var/www/html/public;
Не очень красиво. Имя html больше свойственно корню. Хотя бы в site переименуйте, чтобы было site/public или site/html и т.п.
 

AnrDaemon

Продвинутый новичок
Значит, надо вернуть конфиг nginx-докера на место и в докерфайле исправить

COPY public .
 

firep91613

Новичок
/var/www/html - это вебрут. Почему ты туда PHP файлы копируешь?
Это я забыл вчера поправить.

В смысле? У тебя что, нет отдельного каталога в проекте, в котором у тебя вебрут находится?
Папка blog, созданная. В ней папке nginx и php с докерфайлами, а так же docker-compose.yml. Здесь же я и собираюсь размещать php файлы и все остальное. Точка входа будет public/index.php. Вот конфиг:
Код:
server {
    listen 0.0.0.0:80;
    root /php-app/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
Обновленный докерфайл для PHP:
Код:
FROM php:alpine
RUN apk update && apk add --no-cache libpq \
    && docker-php-ext-install pdo pdo_pgsql
WORKDIR /php-app
COPY ./ /php-app/
Для nginx:
Код:
FROM nginx:alpine
COPY nginx/default.conf /etc/nginx/conf.d
COPY ./ /php-app/
 

AnrDaemon

Продвинутый новичок
Это что?… Зачем постоянно изобретать какую-то отсебятину?
Поставьте себе ЧИСТЫЙ контейнер с nginx и посмотрите его конфиги. И создайте свой конфиг МИНИМАЛЬНО отступая от базового. Чем меньше бессмысленных, ненужных телодвижений - тем меньше времени тратится на поддержку и модернизацию конфигурации в будущем.
 

firep91613

Новичок
Это что?… Зачем постоянно изобретать какую-то отсебятину?
Ок. Тогда так.
Код:
Nginx:
FROM nginx:alpine
COPY nginx/default.conf /etc/nginx/conf.d
COPY ./ /var/www/website/public
Код:
PHP:
FROM php:alpine
RUN apk update && apk add --no-cache libpq \
    && docker-php-ext-install pdo pdo_pgsql
WORKDIR /var/www/website/
COPY ./ /var/www/website/
 

firep91613

Новичок
Еще вопрос про composer. Правильно ли я понимаю, что мне надо установить образ composer из Docker Hub? Затем в в докерфайл PHP добавить -
COPY --from=composer /usr/bin/composer /usr/bin/composer? А потом просто создать composer.json?
 

AnrDaemon

Продвинутый новичок
Это будет самым простым способом получить composer в рабочем проекте.
 

firep91613

Новичок
Попробовал запустить все это дело, но 403 Forbidden nginx/1.27.0.
Код:
[error] 29#29: *13 directory index of "/var/www/website/public/" is forbidden, client: 172.21.0.1, server: , request: "GET / HTTP/1.1", host: "localhost:8080"
[error] 29#29: *13 connect() failed (111: Connection refused) while connecting to upstream, client: 172.21.0.1, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.21.0.4:9000", host: "localhost:8080", referrer: "http://localhost:8080/"
Не понятно. Почему "/var/www/website/public/" is forbidden?

Струтура такая:
Код:
ls ~/Downloads/blog
app  config  core  docker-compose.yml  nginx  php  public
В директрии public есть index.php:
Код:
ls ~/Downloads/blog/public
assets  index.php
Конфиг nginx'a взял самый простой из интернета:
Код:
server {
    listen 0.0.0.0:80;
    root /var/www/website/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
 
Последнее редактирование:

weregod

unserializer
1) рутом для сайта должна быть папка "public";
2) логи nginx смотри, перестань тут гадание пытаться инициировать ))))
 

firep91613

Новичок
2) логи nginx смотри, перестань тут гадание пытаться инициировать ))))
Я их вижу.
Код:
blog-nginx-1  | 2024/08/01 16:07:10 [emerg] 1#1: host not found in upstream "php" in /etc/nginx/conf.d/default.conf:13
blog-nginx-1  | nginx: [emerg] host not found in upstream "php" in /etc/nginx/conf.d/default.conf:13
Он ругается на эту строку в конфиге - fastcgi_pass php:9000. Если я правильно понял. Я уже третий час пытаюсь с этим справится, но не выходит. Добавлял upstream, depends_on: - php в docker-compose.yml. Скоро крыша поедет )
 
Сверху