如何在 docker 下设置 Digital Ocean 上的 laravel 应用程序?

How to set laravel app on Digital Ocean under docker?

我使用 Docker 在 Digital Ocean Server(在 kubuntu 18 下)上安装了 laravel 5 应用程序 所以现在 url 的 mysite 看起来像 http://NNN.NN.NNN.N:8085/public/login,其中 http://NNN.NN.NNN.N - 是我服务器的ip 8085 - 我在 docker-compose.yml 文件中设置的端口:

version: '3.1'

services:

    web:
        build:
            ...
        ports:
            - 8085:80
        working_dir: ${APP_PTH_CONTAINER}

我想为这个应用添加 YouTube 视频,所以我必须设置客户端 ID/客户端密码并获取 授权重定向 URI 我必须输入授权域值,例如:

NNN.NN.NNN.N:8085

我收到错误信息: 域无效:不能包含端口。

你能告诉我如何解决这个任务吗? 我要为这个应用程序使用新域吗,比如 https://my.freenom.com 但是我设置了端口后如何使用它?

修改块 #2: 我重新制作了我的项目文件:

docker-compose.yml:

version: '3.1'

services:

    web:
        image: jwilder/nginx-proxy
        build:
            context: ./web
            dockerfile: Dockerfile.yml

        environment:
            - APACHE_RUN_USER =#1000
            - VIRTUAL_HOST    =my.freenom.com
        volumes:
            - ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
        ports:
            - 8085:80
        working_dir: ${APP_PTH_CONTAINER}


    db:
        image: mysql:5.5.62
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_HOST}:/var/lib/mysql


    adminer:
        image: adminer
        restart: always
        ports:
            - 8086:80
        links:
            - db


    composer:
        image: composer:1.6
        volumes:
            - ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install --ignore-platform-reqs

web/Dockerfile.yml :

FROM nginx:1.10

 RUN apt-get update -y && apt-get install -y libpng-dev  \
     nano  libmcrypt-dev 

 RUN docker-php-ext-install \
     pdo_mysql \
     mcrypt \
     && a2enmod \
     rewrite

但是运行命令:

docker-compose up -d --build

我收到错误:

 docker-php-ext-install: not found

你能看看上面的文件语法吗?

谢谢!

您可以使用 NGINX 作为反向代理服务器(https://github.com/jwilder/nginx-proxy),并在容器中添加一个名为 "virtual-host" 的环境变量,如下所示:

docker run -d -p 80808:8080 -e VIRTUAL_HOST=my.freenom.com --name web your_image

或在您的 docker 撰写案例中

version: '3.1'

services:

web:
    build:
        ...
    ports:
        - 8085:80
    env:
        - VIRTUAL_HOST: my.freenom.com
    working_dir: ${APP_PTH_CONTAINER}

然后配置一个DNS指向机器ip,一旦你这样做了,任何匹配虚拟主机的请求都将被重定向到暴露端口上的容器。