运行docker-compose时遇到问题。它挂在附加上,我无法在localhost:4200
上访问我的网络应用。
搬运工-compose.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
dockerfile:
# 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的-custom.conf:
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
。
答案 0 :(得分:9)
我知道我参加晚会很晚,但这是可以预料的。 docker-compose up,就像docker run一样,如果要返回命令行,则需要-d标志。
命令如下所示:docker-compose up -d
我不确定您的应用为何返回空响应。
希望这有助于其他人加入该话题!
答案 1 :(得分:1)
在我的情况下,docker也挂起并显示“附加到...”消息,但该应用程序正常工作。因此,这似乎是一个可以忽略的显示问题。
您可以在分离模式docker-compose up -d angular
中运行docker以禁止显示此消息。直到现在,我仍然不知道如何在不接收消息的情况下以前台模式运行它。
您的配置文件通常看起来不错,但是您必须配置正确的端口,即nginx也需要监听4200端口。
答案 2 :(得分:0)
尝试在另一个终端上运行此命令:
__repr__()
由于某种原因,这有助于将我的docker-compose悬挂在东西上。似乎STDOUT由于某种原因而挂起,这进一步踢了它。奇怪的是,它仅在使用docker-compose时才挂起...单独启动每个服务都非常有用...
答案 3 :(得分:0)
我正在复制/粘贴,结果得到了两个同名的服务
services:
node_server:
...
node_server: # Duplicate service!
...
这会导致 docker compose 在 Attaching to
上挂起
答案 4 :(得分:0)
对于来自搜索引擎的人:
看起来很傻,但确保日志正在写入标准输出。我花了一个小时才发现日志正在写入文件中。
附加到容器的消息对我来说有点误导。我以为它正在附加的过程中,但标准输出已经附加了。其他一切对我来说都正常工作。容器已启动。