无法使用 Docker 运行 Strapi

sfa*_*oso 3 docker docker-compose strapi

我正在尝试 Dockerize 我的Strapi应用程序,因此首先在项目的根目录中创建了一个.env包含以下内容的文件:

HOST=0.0.0.0
PORT=3002
Run Code Online (Sandbox Code Playgroud)

然后,里面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"),
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

该代码应该将应用程序绑定到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"]
Run Code Online (Sandbox Code Playgroud)

然后我有一个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
Run Code Online (Sandbox Code Playgroud)

(我没有在这里添加该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/;
        }

}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

[错误] 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 /”

小智 8

您在这里犯了一个小错误,在后端服务的环境变量中将 - 替换HOST=localhost为 -HOST=0.0.0.0 它将起作用。