docker 连接到时Dock合成挂起

kx5bkwkv  于 2022-12-18  发布在  Docker
关注(0)|答案(7)|浏览(139)

我在运行docker-compose时遇到了一个问题。它挂起了附加到,我无法访问我的localhost:4200上的Web应用程序。

停靠-编写.yml:

version: '2' # specify docker-compose version

# Define the services/containers to be run
services:
  angular: # name of the first service
    build:
      context: . 
      dockerfile: ./.docker/scs.dockerfile  # specify the directory of the Dockerfile
    container_name: secure-cloud-storage-build-dev
    image: secure-cloud-storage
    ports:
      - "4200:4200" # specify port forwarding

停靠文件:

# Stage 0, based on Node.js, to build and compile Angular
FROM node:8.6 as node
WORKDIR /app
COPY package.json /app/
RUN npm install
COPY ./ /app/
ARG env=prod
RUN npm run build -- --prod --environment $env

# Stage 1, based on Nginx, to have only the compiled app, ready for production with Nginx
FROM nginx:1.13
COPY --from=node /app/dist/ /usr/share/nginx/html
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf

nginx自定义配置文件:

server {
  listen 80;
  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html =404;
  }
}

以下是详细输出:

docker-compose --verbose up output
有什么线索吗?我对Docker世界很陌生,基本上是做教程,所以可能错过了一些明显的东西。我的localhost:4200返回ERR_EMPTY_RESPONSE

mlmc2os5

mlmc2os51#

我知道我迟到了,但这是意料之中的。docker-compose up,就像docker run一样,如果你想取回你的命令行,需要一个-d标志。
以下是该命令的外观:docker-compose up -d
至于为什么你的应用程序返回一个空的响应,我不知道。
希望这能帮助其他人来到这个线程!

8yparm6h

8yparm6h2#

在我的例子中,Docker也挂起显示“附加到...”消息,但应用程序工作正常。所以这似乎是一个显示问题,您可以忽略。
您可以在分离模式docker-compose up -d angular下运行Docker来抑制此消息。到目前为止,我还没有想出如何在前台模式下运行它而不接收消息。
你的配置文件总体上看起来不错,但你必须配置正确的端口,即nginx还需要监听端口4200。

hfwmuf9z

hfwmuf9z3#

如果您像我一样在这里结束,docker-compose甚至没有挂起,只是退出:我的问题是有人添加了要编写的配置文件,而我没有发现调用docker-compose的bash脚本没有使用正确的--profile参数。
如果没有匹配的配置文件,docker-compose将很高兴地什么也不做,只是简单地说attaching to,然后退出,而不是类似于“嘿,您的配置文件参数什么也不匹配,您是故意这样做的吗?”

soat7uwm

soat7uwm4#

Docker合成挂起于连接到

看起来很傻,但是确保日志被写入stdout。我花了一个小时才发现日志被写入了一个文件。
如果你确定日志应该被打印,那么改变Ngnix配置文件,把日志指向stdout。
消息Attaching to container对我来说似乎有点误导。我以为Docker正在连接到控制台,但它已经连接了。其他一切都正常工作。container已启动。

我的本地主机:4200返回ERR_EMPTY_RESPONSE

docker-compose.yml中,将端口Map到Ngnix正在监听的位置。给定listen 80;行,在本例中为80:

ports:
  - "4200:80" # specify port forwarding
w8biq8rn

w8biq8rn5#

尝试在另一个终端运行此命令:

docker exec -it ${CONTAINERNAME} echo "Kick it"

这出于某种原因帮助了我的挂起docker-compose附加到东西上。似乎STDOUT挂起是出于某种原因,这进一步踢它...奇怪的是,它只在使用docker-compose时挂起...单独启动每个服务是一种魅力...

plupiseo

plupiseo6#

如果你的代码运行良好,你只看到Attaching to [container name/id],那么这是预期的行为。附加后,它会打印日志,但如果没有日志,那么它只会在运行状态下等待,所以如果你在等待日志,那么你的日志模块可能有问题,检查一下,看看你的日志。
如果要退出up,请使用up -d

h79rfbju

h79rfbju7#

确保服务名是唯一的

我复制/粘贴了两个同名的服务

services: 
  node_server:
    ...

  node_server: # Duplicate service!
    ...

这可能导致Docker合成在Attaching to上挂起

相关问题