我正在尝试 Dockerize 我的Strapi应用程序,所以首先在项目的根目录中创建了一个.env包含以下内容的文件:
HOST=0.0.0.0
PORT=3002
然后,在里面backend/config/server.js我有:
module.exports = ({ env }) => ({
host: env("HOST", "0.0.0.0"),
port: env.int("PORT"),
admin: {
auth: {
secret: env("ADMIN_JWT_SECRET", "3b8efb990e54568fc0d91ff31390cda7"),
},
},
});
此代码应该将应用程序绑定到0.0.0.0. 事实上,当我运行容器时,我可以看到它绑定到0.0.0.0.
在此之后,我创建了一个Dockerfile包含以下说明的内容:
FROM node:12
EXPOSE 3002
WORKDIR /backend
COPY ./package.json .
RUN npm install
COPY . .
RUN ls -l
CMD ["npm", "run", "develop"]
然后我有一个docker-compose.yml:
version: '3'
services:
backend:
container_name: foo_backend
build: ./backend/
ports:
- '3002:3002'
volumes:
- ./backend:/usr/src/foo/backend
- /usr/src/foo/backend/node_modules
environment:
- APP_NAME=foo_backend
- DATABASE_CLIENT=mysql
- DATABASE_HOST=foo_mysql
- DATABASE_PORT=3306
- DATABASE_NAME=foo_db
- DATABASE_USERNAME=foo
- DATABASE_PASSWORD=foofoo
- DATABASE_SSL=false
- DATABASE_AUTHENTICATION_DATABASE=foo_db
- HOST=localhost
depends_on:
- db
restart: always
(我没有在这里添加db服务)。
当我使用日志运行容器时,docker-compose up --build一切正常:
但是当我访问时,http://localhost:3002我得到:
ERR_EMPTY_RESPONSE
这只发生在 Windows 上。任何的想法?
NGINX 配置
server {
server_name mysite.backend.domain.com www.mysite.backend.domain.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3002/;
}
}
这是我得到的错误:
[错误] 6783#6783: *82 recv() 在从上游读取响应标头时失败(104:连接重置),客户端:93.148.94.171,服务器:mysite.backend.domain.com 请求:“GET /favicon. ico HTTP/1.1”,上游:“http://127.0.0.1:3002/favicon.ico”,主机:“mysite.backend.domain.com”,引用者:“https://mysite.backend.domain.com /"
