【问题标题】:docker-compose up giving error UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)docker-compose up 给出错误 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
【发布时间】:2017-10-30 11:12:14
【问题描述】:

我正在运行我的 nodejs 和区块链代码。我用 dockerfile 和 docker compose 制作了一个 Docker 容器,但是在运行 docker-compose up 时出现错误。

这是控制台上的回溯:

Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 68, in main
  File "compose/cli/main.py", line 121, in perform_command
  File "compose/cli/main.py", line 938, in up
  File "compose/project.py", line 430, in up
  File "compose/service.py", line 317, in ensure_image_exists
  File "compose/service.py", line 918, in build
  File "site-packages/docker/api/build.py", line 238, in build
  File "site-packages/docker/api/build.py", line 285, in _set_auth_headers
  File "site-packages/docker/auth.py", line 97, in resolve_authconfig
  File "site-packages/docker/auth.py", line 125, in _resolve_authconfig_credstore
  File "site-packages/dockerpycreds/store.py", line 25, in get
  File "site-packages/dockerpycreds/store.py", line 57, in _execute
  File "subprocess.py", line 711, in __init__
  File "subprocess.py", line 1343, in _execute_child
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
Failed to execute script docker-compose

我的 docker-compose.yml 是:

version: '2'
services:
  node-app:
    build: app
    ports:
      - "4000:8080"
    volumes:
      - ./app/src:/myapp/src
    depends_on:
      - ethernet_server
    environment:
      - ETHEREUM_CLIENT_IP=http://192.168.178.22
      - ETHEREUM_CLIENT_PORT=8545

  ethernet_server:
    build: testrpc

我不知道出了什么问题。有人可以帮我解决吗?

【问题讨论】:

  • 您的用户名或密码是否包含非 ASCII 字符?
  • 不,它只有 ASCII 字符
  • 您是否复制并粘贴了第 6 行?尝试删除整行(和换行符)并手动重新输入。
  • 当前目录下docker-compose config的输出是什么?

标签: docker containers docker-compose


【解决方案1】:

将以下提到的行粘贴到您的 docker 文件中。它会修复 unicode 错误。

RUN apt-get update -y
RUN apt-get install --reinstall -y locales
# uncomment chosen locale to enable it's generation
RUN sed -i 's/# pl_PL.UTF-8 UTF-8/pl_PL.UTF-8 UTF-8/' /etc/locale.gen
# generate chosen locale
RUN locale-gen pl_PL.UTF-8
# set system-wide locale settings 
ENV LANG pl_PL.UTF-8
ENV LANGUAGE pl_PL
ENV LC_ALL pl_PL.UTF-8

【讨论】:

  • 谢谢,我在容器中运行gdb 时遇到了类似的错误。取消注释/etc/locale.gen 中的en_US.UTF-8 行,然后运行locale-gen 可以解决问题。请注意,虽然我的 LANG 变量中已经有 en_US.UTF-8
【解决方案2】:

尝试使用 docker 直接构建容器:

docker build app

docker build testrpc

然后再次运行您的docker-compose

我遇到了来自UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0 的 docker-compose 的类似报告,发现使用 docker 重建我的容器解决了这个问题。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2018-11-02
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多