docker-compose up 卡在附加到

Kay*_*Kay 5 docker reactjs docker-compose

我正在尝试 dockerize 我的 React 应用程序。

每当我运行时,docker-compose up它都会卡在“附加到”上

文件

# Stage 0 - Pre-requisite: Based On Node.js to BUILD and compile App.

FROM node:10.15.0-alpine as node

WORKDIR /app

COPY package.json /app/

RUN npm install 

COPY ./ /app/

RUN npm run build

# Stage 1 - Based On Nginx to have ONLY a compiled and PRODUCTION ready build.

FROM nginx:1.15.8-alpine

COPY --from=node /app/build/ /usr/share/nginx/html

COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '3'

services:
  idcheck-demo:
    image: idcheck-demo
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)

nginx-custom.conf

server {
    listen 8080;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过转到 0.0.0.0:8080 尝试访问它,但它只是在浏览器中返回以下错误

此页面不起作用 0.0.0.0 未发送任何数据。ERR_EMPTY_RESPONSE

don*_*ngi 2

首先检查容器是否已启动。您可以通过运行以下命令来执行此操作:

docker-compose ps
Run Code Online (Sandbox Code Playgroud)

如果你的配置我得到:

         Name                   Command          State               Ports             
---------------------------------------------------------------------------------------
54368216_idcheck-demo_1   nginx -g daemon off;   Up      80/tcp, 0.0.0.0:8080->8080/tcp
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,容器正在运行,nginx 没有被守护进程,这解释了为什么在运行 docker-compose up 后控制台挂起。

您还可以运行快速 telnet 来查看 HTTP 服务是否正确响应:

telnet localhost 8080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

最重要的是,控制台卡在“正在附加到...”是由于 nginx 进程未作为守护进程运行而导致的。

您可以将容器置于后台运行:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)