Проблема такая. Переставил сайт на yii advanced - docker - nginx - php-fpm. Внутри проекта есть такие папки:
- admin (бывший backend)
- adminapi (бывший frontend).
URL, прописанные в etc/hosts (на локальной машине Ubuntu, не в контейнере):
127.0.0.1 admin.wise
127.0.0.1 adminapi.wise
В папке adminapi находится мой Rest API, URL которого без проблем простукиваются через Postman. Т.е. отправив запрос в постамане, я получаю нужные ответы от API. Однако, из браузера, т.е. из админки в папке admin, достучаться через curl до эндпоинтов в папке adminapi не получается. Пока сидел на апаче - всё работало без проблем.
Получается, сам сайт находится в папке admin, к нему я попадают через браузер по URL admin.wise. Он работает через API, которое находится в папке adminapi. Curl мне что только не писал: Couldn't connect to server, couldn't resolve the host и т.д. Перепробовал всё, два дня уже курю гугл, но без результатов. Примерно где-то внутри что-то мне подсказывает, что дело в контейнерах, но я не могу понять что именно надо сделать. Постман ведь спокойно стучится до эндпоинтов и ответы приходят.
Например: ввожу в постмане URL http://adminapi.wise/<эндпоинт> и получаю нужный ответ. А через браузер по тому же URL через Curl достучаться уже не могу.
Помогите кто чем может пжста.
docker-compose.yml
Код: Выделить всё
version: '3'
services:
nginx:
image: nginx:latest
ports:
- 80:80
volumes:
- ./.dev/docker/nginx/site.conf:/etc/nginx/conf.d/default.conf
- ./:/app
depends_on:
- php-fpm
php-fpm:
build: ./.dev/docker/php
env_file:
- ./.env
volumes:
- ./:/app
working_dir: /app
db:
image: mariadb:10.11
environment:
MYSQL_DATABASE: database_db
MYSQL_ROOT_PASSWORD: colt
volumes:
- ./developer/mysql/db:/var/lib/mysql
- ./developer/mysql/logs:/var/log/mysql
- ./developer/mysql/conf:/etc/mysql/conf.d
- ./developer/mysql/mysql-dump:/docker-entrypoint-initdb.d
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
.dev/docker/nginx/site.conf
Код: Выделить всё
map $http_x_forwarded_proto $fastcgi_param_https_variable {
default off;
https off;
}
server {
server_name admin.wise;
listen 80;
listen [::]:80;
root /app/admin/web;
index index.php;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
server {
server_name adminapi.wise;
listen 80;
listen [::]:80;
root /app/adminapi/web;
index index.php;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
.dev/docker/php/Dockerfile
Код: Выделить всё
FROM php:8.2.8-fpm
RUN apt-get update && apt-get upgrade -y && apt-get install -y unzip && apt-get install -y curl
# install-php-extensions
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && install-php-extensions gd mcrypt pdo_mysql xdebug zip
# /install-php-extensions
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --quiet
RUN groupadd --gid 1000 dockerGroup
RUN useradd --uid 1000 --gid dockerGroup --shell /bin/bash --create-home andrey
USER andrey
Код: Выделить всё
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, 'http://adminapi.wise/v1/administrator/login');
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);