如何在 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,一旦你这样做了,任何匹配虚拟主机的请求都将被重定向到暴露端口上的容器。
我使用 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,一旦你这样做了,任何匹配虚拟主机的请求都将被重定向到暴露端口上的容器。