Laravel Как запустить laravel прилоджение в docker без “/public”?

mstdmstd

Новичок
С наступающим!
Установив laravel 5.7 приложение под docker(на основе php:7.2-apache ) я вынужден добавлять "/public" в урле моего сайта ,так что рут моего сайта имеет вид
http://127.0.0.1:8081/public

Я отредактировал .env моего приложения
Код:
APP_URL=http://127.0.0.1:8081/public/
Но это не помогло, я получаю инвалидный урл картинки :
Код:
http://127.0.0.1:8081/storage/votes/-vote-16/Babe_ver1.jpg?dt=1546059015
Чтобы работал на сайте должен быть:
Код:
http://127.0.0.1:8081/public/storage/votes/-vote-16/Babe_ver1.jpg?dt=1546059015
То же самое с ajaxзапросами, получаю :
Код:
http://127.0.0.1:8081/admin/get_activity_log_rows/1
Валидный должен быть
Код:
http://127.0.0.1:8081/public/admin/get_activity_log_rows/1

В docker-compose.yml :
Код:
version: '3.1'

services:

    web:

        build:
            context: ./web   
            dockerfile: Dockerfile.yml
        
        environment:
            - APACHE_RUN_USER=www-data
        volumes:
            - ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
        ports:
            - 8081:80
        working_dir: ${APP_PTH_CONTAINER}


    composer:
        image: composer:1.8
        volumes:
            - ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install
В .env docker-проекта :

Код:
# PATHS
DB_PATH_HOST=./databases
APP_PATH_HOST=./Votes
APP_PTH_CONTAINER=/var/www/html/
А как правильно ?


Спасибо !
 

mstdmstd

Новичок
Спасибо за ссылку, интересно!
Хотя и непонятно и как-то очень сложно...
Нарыл на способ описать точку ввода
Код:
ENTRYPOINT [“php”,“artisan”,“serve”,"–host=0.0.0.0","–port=80"]
в конце Dockerfile.yml файла

но получаю
Код:
$ docker-compose up -d
votes_docker_db_1 is up-to-date
Starting votes_docker_composer_1 ...
Starting votes_docker_composer_1 ... done
Starting votes_docker_web_1 ... done
$ docker logs --tail=20 votes_docker_web_1
Warning: require(/var/www/html/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/artisan on line 18

Fatal error: require(): Failed opening required '/var/www/html/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/html/artisan on line 18
Too many arguments, expected arguments "command".
непонятно почему ошибка ?
 

mstdmstd

Новичок
Запуская Example Laravel Project из ссылки выше
я переименовал .env-dist в .env


1) Но если оставить порты как в примере
Код:
HOST_UID=1001
HTTP_PORT=80

HTTPS_PORT=443
MYSQL_PORT=3306

MAILCATCHER_PORT=1080
POSTGRES_PORT=5432
то получаю
Код:
$ docker-compose up -d
Creating project_laravelDockerTesting_postgres_adminer ... done
Creating project_laravelDockerTesting_php              ... done
Creating project_laravelDockerTesting_mysql            ... error
Creating project_laravelDockerTesting_mailcatcher      ...
Creating project_laravelDockerTesting_postgres         ...
Creating project_laravelDockerTesting_nginx            ...
Creating project_laravelDockerTesting_postgres         ... error
ERROR: for project_laravelDockerTesting_mysql  Cannot start service mysql: b'driver failed programming external connectivity on endpoint project_laravelDockerTesting_mysql (43400039dd4cfa39b2b007215f380fc06f4674cc37be266ebd39b70993546504): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use'

Creating project_laravelDockerTesting_mailcatcher      ... done
Creating project_laravelDockerTesting_nginx            ... error

ERROR: for project_laravelDockerTesting_nginx  Cannot start service nginx: b'driver failed programming external connectivity on endpoint project_laravelDockerTesting_nginx (3d22318c66e2def39a23378860fe24c484b755e94fb9d102a5c1900071c07fad): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use'

ERROR: for mysql  Cannot start service mysql: b'driver failed programming external connectivity on endpoint project_laravelDockerTesting_mysql (43400039dd4cfa39b2b007215f380fc06f4674cc37be266ebd39b70993546504): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use'

ERROR: for postgres  Cannot start service postgres: b'driver failed programming external connectivity on endpoint project_laravelDockerTesting_postgres (ef198dc6b5d2ffbe927e5c5f84a2b60f20a37922c258f36aa2451030fcd86963): Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address already in use'

ERROR: for nginx  Cannot start service nginx: b'driver failed programming external connectivity on endpoint project_laravelDockerTesting_nginx (3d22318c66e2def39a23378860fe24c484b755e94fb9d102a5c1900071c07fad): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use'
Так как на моем лаптопе kubuntu lamp c apache -ем уже запущен.


2) Попробовал поменять порты :
Код:
HOST_UID=1001

HTTP_PORT= 8088

HTTPS_PORT=443

MYSQL_PORT= 8089

MAILCATCHER_PORT=1080
POSTGRES_PORT=5432
и получил ошибку :
Код:
$ docker-compose up -d
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.nginx.ports is invalid: Invalid port " 8088:80", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
services.mysql.ports is invalid: Invalid port " 8089:3306", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
погуглив нашел на такой синтаксис:
Код:
version: '2.1'

services:
  web:
    image: 'tutum/hello-world'
    ports:
      - '[2a01:7c8:fffb:31::1]:80:80'
Если я правильно понял, то в примере используется уникальный macid(я когда-то такой получал для каких-то целей...).
Как правильно указать эти порты?
 
Сверху