php - nginx 不使用 VSCode 远程容器扩展(docker compose)打开 localhost
问题描述
无法使用 Visual Studio 代码的远程容器扩展从主机浏览器打开 localhost。
如果从 VSCode 命令展开并从浏览器Remote-Containers: Reopen in Container
打开,将显示。http://localhost
502 Bad Gateway
但是,如果您直接从主机执行命令,Laravel 顶部屏幕将在http://localhost/
.
远程容器设置是否丢失?
码头工人-compose.yml
version: '3'
services:
php:
container_name: php
build: ./docker/php
volumes:
- ./server:/var/www
nginx:
image: nginx
container_name: nginx
ports:
- 80:80
volumes:
- ./server:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:8.0
container_name: db-host
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.conf:/etc/mysql/conf.d/my.cnf
- ./docker/db/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
php-dockerfile
FROM php:7.3-fpm
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y libzip-dev \
&& docker-php-ext-install zip pdo_mysql
#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
WORKDIR /var/www
RUN composer global require "laravel/installer"
nginx错误日志
[error] 7#7: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9000", host: "localhost"
解决方案
通过更改此文件已解决。
.devcontainer/docker-compose.yml
注释掉了command: ...
# Overrides default command so things don't shut down after the process ends.
# command: /bin/sh -c "while sleep 1000; do :; done"
推荐阅读
- c# - C# await delay not working
- excel - 从表格到 Excel 中的 2 列
- hdfs - 如何配置 AWS EMR 以使用 s3 作为 hdfs 存储
- dart - 在 Flutter 应用程序中编辑 MP3/Wav 文件 (Dart)
- php - 我想在 facebook php SDK 中导入 FB 事件数据
- r - 计算数据框列中的元素,然后在 R 中创建单独的列
- java - 调用函数会更新数组吗?
- c# - 从 Webbrowser 获取 Authorization Bearer 到 WebRequest
- php - Yii2:使用 is_callable 方法检查方法的可用性
- asp.net-mvc - 使用 Asp .Net MVC 中的身份框架从 OAuth2 获取访问令牌