我遵循了这个问题的公认答案:Accessing webpack dev server output with specific port in ddev / docker container
正在尝试访问
http://localhost:8080结果为503: No ddev back-end site available.
http://<project>
.ddev.site:8080结果为502: Unresponsive/broken ddev back-end site.
根据其他问题的答案,我添加了一个docker-compose.devserver.yaml
文件,内容如下:
version: "3.6"
services:
web:
expose:
- 8080
environment:
- HTTP_EXPOSE=${DDEV_ROUTER_HTTP_PORT}:80,${DDEV_MAILHOG_PORT}:8025,8080:8080
- HTTPS_EXPOSE=${DDEV_ROUTER_HTTPS_PORT}:80,${DDEV_MAILHOG_HTTPS_PORT}:8025,8081:8080
开发服务器选项如下:
const devServerOptions = {
clientLogLevel: 'info', // 'debug',
contentBase: [
path.join(__dirname, webPath),
path.join(__dirname, templatesPath),
],
compress: true,
disableHostCheck: true,
historyApiFallback: true,
host: devServerHost,
hot: true,
hotOnly: false,
headers: {
'Access-Control-Allow-Origin': '*',
},
https: devServerIsHttps
? {
key: fs.readFileSync(process.env.DEVSERVER_KEY),
cert: fs.readFileSync(process.env.DEVSERVER_CRT),
ca: fs.readFileSync(process.env.DEVSERVER_CA),
}
: false,
inline: true,
overlay: true,
port: devServerPort,
public: publicPath,
publicPath: '',
watchContentBase: true,
watchOptions: {
poll: !!parseInt(process.env.DEVSERVER_POLL || 0),
ignored: /node_modules/,
},
}
它正在提取以下.env
变量:
DEVSERVER_ENABLED=true
DEVSERVER_HOST=localhost
DEVSERVER_PORT=8080
DEVSERVER_HTTPS=false
例如,当我在http://localhost:8080/dist/styles/main.min.css
访问http://<project.ddev.site
时,试图加载资产,并导致503错误,其中提到没有后端ddev站点可用。
如果我删除上面提到的docker-compose
文件,而是添加到.ddev/config.yaml
文件:
web_extra_exposed_ports:
- name: devserver
container_port: 8080
http_port: 8080
https_port: 8081
在没有运行yarn dev
(cross-env NODE_ENV=development webpack serve --stats=minimal --progress
)命令然后运行ddev exec curl localhost:8080
的情况下,我收到了connection refused
。
在运行yarn dev
之后,我收到了我的应用程序主入口点的index.html
文件。(这是一个Craft CMS应用程序,所以它会在模板中提取index.html。也会提取Twig注解,所以它会输出实际的文件内容)
1条答案
按热度按时间jdzmm42g1#
我解决这个问题的方法可能不适用于所有人。
我发现的一件事是,我必须通过DDEV URL(即
<project-name>.ddev.site
而不是localhost)访问开发服务器。接下来,我遇到了端口问题。其他人可能会有所不同,但我首先尝试了端口1339,8080,8000,没有运气。直到我使用9000,我才有运气。
对于DDEV中的暴露端口,我不需要创建新的
docker-compose
文件,而是使用.ddev
文件夹中config.yaml
文件中的web_extra_exposed_ports
选项。注意:即使你不打算使用https,你也需要
https_port
。最后,在我的
package.json
中,创建命令以运行webpack dev服务器,我需要添加选项--host=0.0.0.0
当然,在导航到您的网站之前,请确保启动webpack dev服务器。