无法将coinbase API用于docker容器

时间:2018-04-26 07:26:57

标签: python docker coinbase-api

我不明白为什么当我将我的python coinbase应用程序用到docker容器中时,我总是得到coinbase.wallet.error.AuthenticationError: APIError(id=authentication_error): invalid api key

我已经检查过我的API密钥是否正确,如果我打印它(在docker容器日志上),则会显示该事件

如果直接使用gunicorn运行相同的应用程序,它就像魅力一样。

关于这里发生了什么的任何想法?

这是烧瓶应用程序的Dockerfile

FROM python:3.5

ENV PYTHONUNBUFFERED 1
RUN mkdir -p /opt/services/flaskapp/src
# We copy the requirements.txt file first to avoid cache invalidations
COPY requirements.txt /opt/services/flaskapp/src/
COPY . /opt/services/flaskapp/src
WORKDIR /opt/services/flaskapp/src
RUN ls
RUN pip install -e .
RUN pip install -r requirements.txt
RUN pip install uwsgi
RUN myapp init
RUN tox
EXPOSE 5090
CMD ["gunicorn", "-b 0.0.0.0:5090", "myapp.wsgi:app"]

这是Docker撰写

version: '3.2'
services:
  db:
    image: "postgres:9.6.5"
    volumes:
      - "dbdata:/var/lib/postgresql/data"
    env_file:
      - ./myapp/.env
    networks:
      - traefik-net
  flaskapp:
    build: .
    env_file:
      - ./myapp/.env
    privileged: true
    volumes:
      - .:/opt/services/flaskapp/src
    networks:
      - traefik-net
    depends_on:
      - db
  nginx:
    image: "nginx:1.13.5"
    ports:
      - "4280:80"
    volumes:
      - ./conf.d:/etc/nginx/conf.d
    networks:
      - traefik-net
    depends_on: 
      - flaskapp
networks:
  traefik-net:
    driver: bridge
volumes:
  dbdata

以下是引发build_api_error

的应用代码
cb_helper = CoinbaseHelper(
    account,
    os.getenv("CB_API_KEY"),
    os.getenv("CB_API_SECRET")
)
print(os.getenv("CB_API_KEY"))
cb_wallet = cb_helper.create_address()

结果

flaskapp_1  | Traceback (most recent call last):
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1997, in __call__
flaskapp_1  |     return self.wsgi_app(environ, start_response)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1985, in wsgi_app
flaskapp_1  |     response = self.handle_exception(e)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask_restful/__init__.py", line 273, in error_router
flaskapp_1  |     return original_handler(e)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1540, in handle_exception
flaskapp_1  |     reraise(exc_type, exc_value, tb)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/_compat.py", line 32, in reraise
flaskapp_1  |     raise value.with_traceback(tb)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1982, in wsgi_app
flaskapp_1  |     response = self.full_dispatch_request()
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1614, in full_dispatch_request
flaskapp_1  |     rv = self.handle_user_exception(e)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask_restful/__init__.py", line 273, in error_router
flaskapp_1  |     return original_handler(e)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1517, in handle_user_exception
flaskapp_1  |     reraise(exc_type, exc_value, tb)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/_compat.py", line 32, in reraise
flaskapp_1  |     raise value.with_traceback(tb)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1612, in full_dispatch_request
flaskapp_1  |     rv = self.dispatch_request()
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/app.py", line 1598, in dispatch_request
flaskapp_1  |     return self.view_functions[rule.endpoint](**req.view_args)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask_restful/__init__.py", line 480, in wrapper
flaskapp_1  |     resp = resource(*args, **kwargs)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask/views.py", line 84, in view
flaskapp_1  |     return self.dispatch_request(*args, **kwargs)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask_restful/__init__.py", line 595, in dispatch_request
flaskapp_1  |     resp = meth(*args, **kwargs)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/flask_jwt_extended/view_decorators.py", line 39, in wrapper
flaskapp_1  |     return fn(*args, **kwargs)
flaskapp_1  |   File "./myapp/api/resources/wallet.py", line 74, in post
flaskapp_1  |     cb_wallet = cb_helper.create_address()
flaskapp_1  |   File "./myapp/commons/coinbase.py", line 13, in create_address
flaskapp_1  |     adresse = self.client.create_address(self.account)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/coinbase/wallet/client.py", line 308, in create_address
flaskapp_1  |     response = self._post('v2', 'accounts', account_id, 'addresses', data=params)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/coinbase/wallet/client.py", line 132, in _post
flaskapp_1  |     return self._request('post', *args, **kwargs)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/coinbase/wallet/client.py", line 116, in _request
flaskapp_1  |     return self._handle_response(response)
flaskapp_1  |   File "/usr/local/lib/python3.5/site-packages/coinbase/wallet/client.py", line 125, in _handle_response
flaskapp_1  |     raise build_api_error(response)
flaskapp_1  | coinbase.wallet.error.AuthenticationError: APIError(id=authentication_error): invalid api key

这是我的coinbase助手类

from coinbase.wallet.client import Client


    class CoinbaseHelper():
        """
        Helper to talk to coinbase API
        """
        def __init__(self, account, api_key, api_secret):
            self.client = Client(api_key, api_secret)
            self.account = account

        def create_address(self):
            adresse = self.client.create_address(self.account)
            return adresse

        def get_adresse(self, addr):
            address = self.client.get_address(self.account, addr)
            return address

        def get_accounts(self):
            accounts = self.client.get_accounts()
            return accounts

0 个答案:

没有答案