gpt4 book ai didi

docker - 如何修复以代码 6 退出的 docker 容器?

转载 作者:行者123 更新时间:2023-12-01 23:07:50 27 4
gpt4 key购买 nike

上下文

我在我的个人计算机上运行带有 docker-compose 文件的 Meteor (js) 应用程序的 dockerized ubuntu。它附加到一个 mongo DB 容器。一个 nginx 代理容器正在运行,使我的开发 url 使用 ssl (https) 受到保护。

Docker 镜像

  • ubuntu: ubuntu:18.04
  • nginx 代理:jwilder/nginx-proxy:alpine
  • mongo : mongo:最新
  • 在本地加上我自己的 meteor 应用程序。

其他

  • meteor 版本:1.8.1
  • Docker 版本:18.09.3,构建 774a1f4
  • Docker Compose 版本:1.23.2,构建 1110ad01

问题

由于我使用 docker-compose down 停止了我的容器,当我重新启动它们时,我的 webapp 容器一直退出(退出代码为 6)。自从我之前的 docker-compose -f docker-compose.dev.yml --verbose up 以来,我没有更改 docker-compose 文件

docker-compose -f docker-compose.dev.yml --verbose up 显示的错误

compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e')
compose.cli.verbose_proxy.proxy_callable: docker wait <- ('26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.25/containers/26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e/json HTTP/1.1" 200 None
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.25/containers/26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e/wait HTTP/1.1" 200 30
compose.cli.verbose_proxy.proxy_callable: docker wait -> {'Error': None, 'StatusCode': 6}
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': 'docker-default',
'Args': [],
'Config': {'ArgsEscaped': True,
'AttachStderr': False,
'AttachStdin': False,
'AttachStdout': False,
'Cmd': ['meteor'],
'Domainname': '',
'Entrypoint': None,
'Env': ['ENV_APP_SERVER_USERNAME=app',
...webappContainer exited with code 6

docker ps -a 的结果

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                      PORTS                                      NAMES
26d90365fe9a xxxxxxxxxx_webapp "meteor" 23 minutes ago Exited (6) 13 seconds ago webappContainer
4073bbfe37cf mongo "docker-entrypoint.s…" 39 minutes ago Up 14 seconds 0.0.0.0:27017->27017/tcp mongoDBContainer
201f0a99d1cf jwilder/nginx-proxy:alpine "/app/docker-entrypo…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-proxy_nginx-proxy_1

docker logs <container_id> 的结果

** 无 **

How ? The container will not even start. When I do docker run it works..

源文件

  • docker-compose.dev.yml
version: '3'
services:
webapp:
container_name: webappContainer
env_file: .env
environment:
VIRTUAL_HOST: mysite.local
VIRTUAL_PORT: ${PORT}
build:
context: ${CONTEXT}
dockerfile: ${DOCKERFILE}...
volumes:
- ${VOLUME}:/usr/src/app
expose:
- ${PORT}
networks:
- dbAppConnector
- default
depends_on:
- mongodb
mongodb:...
container_name: ${MONGO_CONTAINER_NAME}
image: mongo
restartmongodb: always
env_file: .env
ports:
- "${MONGO_PORT}:${MONGO_PORT}"..
networks:
dbAppConnector:
volumes:
- mongo_volume:/data/db
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
volumes:
mongo_volume:
networks:
default:
external:
name: nginx-proxy
dbAppConnector:


Note that when i do docker-compose config every .env variables are correctly displayed.

  • Dockerfile.dev
FROM ubuntu:18.04

# Set environment dir & copy files
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app

# Make host.docker.internal accessible from outside the container (dev only)
# RUN ip -4 route list match 0/0 | awk '{print $3 "host.docker.internal"}' >> /etc/hosts

# Add user to run localy (dev only) the app
RUN addgroup meteoruser && useradd -rm -d /home/moff -s /bin/bash -g root -G sudo -u 1000 meteoruser

# Update distribution
RUN apt-get update -q && apt-get clean \
# Install curl
&& apt-get install curl -y \
# Install Meteor
&& (curl https://install.meteor.com | sh) \
# Install node js
&& cd /usr/src/app \
# replace vx.x.x by meteor node -e 'console.log("I am Node.js %s!", process.version);' output from my project folder.
&& bash -c 'curl "https://nodejs.org/dist/v8.15.1/node-v8.15.1-linux-x64.tar.gz" > /usr/src/app/required-node-linux-x64.tar.gz' \
&& cd /usr/local && tar --strip-components 1 -xzf /usr/src/app/required-node-linux-x64.tar.gz \
&& rm /usr/src/app/required-node-linux-x64.tar.gz \
&& cd /usr/src/app \
&& npm install

RUN cd /usr/src/app && chown -Rh meteoruser .meteor/local
EXPOSE 80
ENV PORT 80
WORKDIR /usr/src/app

USER meteoruser
CMD ["meteor"]

我目前尝试解决的问题

  • 我停止并删除了所有容器,删除了所有图像,删除了所有网络,并重建了一切。
  • 我检查了我的互联网访问(平均 ping:~35 毫秒)。
  • 我尝试了带有标志 ?release=1.8.0.2 的不同版本的“Meteor js”(1.8.1,最新,1.8.0.2)在我做的 Dockerfile.dev 部分 && (curl https://install.meteor.com | sh) \ .
  • 我试图在容器退出时查找有关代码 6 的一些文档,但没有找到任何相关内容。
  • 它尝试查看日志,但没有日志可用于已退出的应用程序容器 xxxxxx_webapp:结果为空。
  • 我尝试单独启动 xxxxxx_webapp 容器,结果很奇怪 docker run xxxxxxx_webapp .
This is your first time using Meteor!
Installing a Meteor distribution in your home directory.
Downloading Meteor distribution

花了 2 多分钟才最终显示:

Retrying download in 5 seconds …
Retrying download in 5 seconds …
Retrying download in 5 seconds …
Retrying download in 5 seconds …

[[[[[ /usr/src/app ]]]]]

=> Started proxy.
=> Started MongoDB.

因此容器正在运行而不会退出,并带有单独的 docker run。命令..

Reminder: everything was working fine for 4+ weeks, then suddenly I suspect my new internet connection being too slow (I moved from my parents house 1 week ago).

你们能给点建议吗?我可以提供任何其他信息来帮助您了解我所缺少的内容吗?提前致谢!

编辑

其他尝试使事情正常进行:

  • 我从 docker 中删除并重新安装了所有内容。
  • 我在 3 周前尝试了该应用程序的旧版本,该版本可以正常运行。
  • 除了使用其他 Wi-Fi 之外,我尝试了所有方法。这行得通吗?我不这么认为,但总有希望。

最佳答案

虽然我也从未发现退出代码 6 是什么,但我确实在我的设置中找到了它。原来我的环境是无效的,因为我不小心将它设置为一个不存在的分支。

docker-compose --verbose up 让我走上了正确的道路

关于docker - 如何修复以代码 6 退出的 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com