Bra*_*der 7 docker docker-compose
我一直在尝试让 Docker 与 Postgres 和 Flask 一起使用,但我遇到了 Postgres 密码问题,并且 docker 无法找到我的 entry.sh 文件。这似乎是 docker 未正确更新的问题,但现在更新后,当我运行 docker-compose up 时,我收到“go”错误,我不知道它们是什么意思。
\n这是错误日志:
\npanic: runtime error: index out of range [1] with length 1\n\ngoroutine 37 [running]:\ngithub.com/docker/compose-cli/pkg/compose.(*convergence).ensureService(0xc00027ff20, 0x2120ba8, 0xc000454450, 0xc000240f00, 0xc0001ce7c8, 0x3, 0x0, 0x0, 0x0, 0xc000240a00, ...)\n github.com/docker/compose-cli/pkg/compose/convergence.go:222 +0x11f1\ngithub.com/docker/compose-cli/pkg/compose.(*convergence).apply.func1(0x2120ba8, 0xc000454450, 0xc0001ce7c8, 0x3, 0x0, 0x0)\n github.com/docker/compose-cli/pkg/compose/convergence.go:99 +0x21f\ngithub.com/docker/compose-cli/pkg/compose.run.func1(0x0, 0x0)\n github.com/docker/compose-cli/pkg/compose/dependencies.go:102 +0xa3\ngolang.org/x/sync/errgroup.(*Group).Go.func1(0xc000590540, 0xc000626180)\n golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c/errgroup/errgroup.go:57 +0x59\ncreated by golang.org/x/sync/errgroup.(*Group).Go\n golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c/errgroup/errgroup.go:54 +0x66\nRun Code Online (Sandbox Code Playgroud)\n这是我的 docker-compose.yml:
\nservices:\n api:\n container_name: api\n build:\n context: .\n dockerfile: api/Dockerfile.api\n image: mutcompute-api\n ports:\n - "5000:5000"\n volumes:\n - ./api:/app/\n env_file: \n - ./api/.env\n command: gunicorn -b 0.0.0.0:5000 api:app && flask db upgrade\n # entrypoint: ["./api/entry.sh"]\n depends_on:\n - db\n client:\n container_name: client\n build:\n context: .\n dockerfile: client/Dockerfile.client\n image: mutcompute-client\n ports:\n - "3000:3000"\n volumes:\n - ./client:/app/\n email:\n container_name: email\n build:\n context: .\n dockerfile: api/Dockerfile.api\n image: mutcompute-api\n ports:\n - "8025:8025"\n command: python -m smtpd -n -c DebuggingServer 0.0.0.0:8025 \n db:\n image: postgres:13-alpine\n volumes:\n - postgres_data:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: mutcompute\n POSTGRES_PASSWORD: mutcompute\n POSTGRES_DB: mutcompute_dev\n networks:\n - default\n ports:\n - 5405:5432\n restart: always\n volumes:\n - ./postgres-data:/var/lib/postgresql/data\nRun Code Online (Sandbox Code Playgroud)\n我的 Dockerfile:
\nFROM python:slim\n\nLABEL maintainer="Brad Alexander"\n\nRUN useradd mutcompute\n\nWORKDIR /app\n\nCOPY . /app/\nCOPY entry.sh /app/\n\nENV FLASK_APP api.py\n\nRUN chown -R mutcompute:mutcompute /app && \\\n # chmod +x ./entry.sh && \\\n pip install -r requirements.txt\n\nUSER mutcompute\n\nEXPOSE 5000\nRun Code Online (Sandbox Code Playgroud)\n和一个粗略的文件树
\nProject\n |-api\n |-app/\n |-Dockerfile-api\n |-entry.sh\n |-client\n |-src/\n |-Dockerfile-client\n |-Docker-compose.yml\nRun Code Online (Sandbox Code Playgroud)\n客户端是React,更新前运行良好。
\n有时,当我编辑 compose 文件时,它开始重新创建 api 容器,然后失败,如下所示:
\n\xe2\xa0\x99 Container api Recreate 0.2s\n \xe2\xa0\x99 Container bb72362b9e19_api Recreate 0.2s\npanic: runtime error: index out of range [1] with length 1\n...\nRun Code Online (Sandbox Code Playgroud)\n希望这是足够的信息。我真的很感谢任何帮助!
\nBra*_*der 10
TLDR:我想我在后台有绑定端口的容器。
简单修复:
docker-compose up --remove-orphans // not sure if this step is necessary
docker-compose down
docker-compose up
Run Code Online (Sandbox Code Playgroud)
我实际上是如何修复它的:
我切换到没有数据库服务的先前版本,并提示运行docker-compose --remove -orphans,这并没有多大作用。在搜索 GitHub 问题后,发现大多数问题都与副本相关,我决定到底是什么,并向 api 服务添加了副本部分。虽然这个错误与副本无关,但我得到了一个不同的错误:
警告:“api”服务正在使用自定义容器名称“api”。Docker 要求每个容器都有一个唯一的名称。删除自定义名称以扩展服务。
对于这个错误,我只是注释掉了每个服务中的所有container_name部分,并得到了一个新错误:
来自守护程序的错误响应:驱动程序在端点 <...> 上编程外部连接失败:绑定 0.0.0.0:5000 失败:端口已分配
繁荣!这是真正的问题。搜索了这个,发现我只需要运行docker-compose down
当我切换回带有数据库服务的分支时,一切正常!
| 归档时间: |
|
| 查看次数: |
3997 次 |
| 最近记录: |