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

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "Laravel", создана пользователем mstdmstd, 31 дек 2018.

  1. mstdmstd

    mstdmstd Новичок

    Сообщения:
    439
    Ваш город:
    Ivano-Frankivs'k, Ukraine
    Address:
    Ivano-Frankivs'k, Ukraine
    Country:
    Location on Map:
    С наступающим!
    Установив 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/
    
    А как правильно ?


    Спасибо !
     
  2. scorpion-ds

    scorpion-ds Новичок

    Сообщения:
    1.084
    Ваш город:
    Kharkiv, Ukraine
    Address:
    Kharkiv, Ukraine
    Country:
    Location on Map:
  3. mstdmstd

    mstdmstd Новичок

    Сообщения:
    439
    Ваш город:
    Ivano-Frankivs'k, Ukraine
    Address:
    Ivano-Frankivs'k, Ukraine
    Country:
    Location on Map:
    Спасибо за ссылку, интересно!
    Хотя и непонятно и как-то очень сложно...
    Нарыл на способ описать точку ввода
    Код:
    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".
    непонятно почему ошибка ?
     
  4. mstdmstd

    mstdmstd Новичок

    Сообщения:
    439
    Ваш город:
    Ivano-Frankivs'k, Ukraine
    Address:
    Ivano-Frankivs'k, Ukraine
    Country:
    Location on Map:
    Запуская 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(я когда-то такой получал для каких-то целей...).
    Как правильно указать эти порты?