2016-09-15 5 views
0

私はmemcachedを使用したプロジェクトを作成しました。だから、ドッカーが "pip install pylibmc"をしようとすると、ライブラリはまだインストールされていないlibmemcachedの原因を見つけることができません。どうすれば私のdocker-compose.ymlを整理できますか、あるいは私はdockerfileで何かする必要がありますか?Docker、pylibmc、memcached

は今私のドッキングウィンドウ-compose.ymlは(私はmemcachedのコンテナラインを削除した)のようになります。

version: '2' 
    services: 

     app: 
     build: . 
     volumes: 
      - ./app:/usr/src/app 
      - ./logs:/var/log 
     expose: 
      - "8000" 
     links: 
      - db:db 
     networks: 
      tickets-api: 
      ipv4_address: 172.25.0.100 
     extra_hosts: 
      - "db:172.25.0.102" 

     webserver: 
     image: nginx:latest 
     links: 
      - app 
      - db 
     volumes_from: 
      - app 
     volumes: 
      - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf 
      - ./nginx/uwsgi_params:/etc/nginx/uwsgi_params 
     ports: 
      - "80:80" 
     networks: 
      tickets-api: 
      ipv4_address: 172.25.0.101 

     db: 
     restart: always 
     image: postgres 
     volumes: 
      - ./postgresql/pgdata:/pgdata 
     ports: 
      - "5432:5432" 
     environment: 
      - POSTGRES_USER=postgres 
      - POSTGRES_PASSWORD=postgres 
      - PGDATA=/pgdata 
     networks: 
      tickets-api: 
      ipv4_address: 172.25.0.102 

    networks: 
     tickets-api: 
     driver: bridge 
     ipam: 
      config: 
      - subnet: 172.25.0.0/24 
+0

あなたはアプリですか、PHPアプリですか? – levi

+0

これはPythonアプリケーションです。あなたが受け取ったエラーについてもっと投稿したいかもしれません。出口エラーメッセージといくつかのコンテキストログが素晴らしいでしょう。同様のパッケージをインストールした経験から答えを加えました。 – dnephin

答えて

0

2つのオプションがあります。あなたのアプリのコンテナ内にインストールするか、memcachedを隔離されたコンテナとしてインストールしてください。アプリのDockerfilelibmemcachedをインストールするコマンドを追加することができます

OPTION 1

。あなたがUbuntuのベースの画像や高山のいくつかの種類を使用している場合

ちょうどpip install pylibmc

OPTION 2

あなたが追加することができますあなたが行うことができ、その後

RUN apt-get update && apt-get install -y \ 
     libmemcached11 \ 
     libmemcachedutil2 \ 
     libmemcached-dev \ 
     libz-dev 

を追加します分離されたコンテナとしてmemcached。あなたのドッカーを作成するだけです。

memcached: 
    image: memcached 
    ports: 
    - "11211:11211" 

もちろん、あなたのアプリケーションコンテナをmemcachedコンテナにリンクする必要があります。

+0

私はこれが質問に答えるとは思わない。ユーザーがサーバーを実行せずにmemcacheクライアントをインストールしようとしています。 – dnephin

0

この問題を解決する最も簡単な方法は、アプリケーションのDockerfileを更新し、pythonパッケージを構築するために必要な開発の依存関係をインストールすることです。

のようなものかもしれないのUbuntu/Debianでは

:秒(より有利な)オプションは、別の容器にこのパッケージのホイールを構築することです

apt-get install libmemcached-dev gcc python-dev 

、その後、代わりにソースtarballのホイールをインストール。そうすれば、他のパッケージをインストールする必要はなく、最終的なイメージはずっと小さくなります。しかし、セットアップにはもっと多くの作業が必要です。