首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker,pylibmc,memcached

Docker,pylibmc,memcached
EN

Stack Overflow用户
提问于 2016-09-15 20:44:14
回答 2查看 2.1K关注 0票数 3

我有一个使用memcached的项目。因此,当docker试图"pip install pylibmc“时,库无法找到libmemcached,因为它尚未安装。我如何组织我的对接者-Compose.yml,或者也许我必须做些什么对码头文件?

现在,我的docker-compose.yml看起来像(我删除了memcached容器线):

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-16 00:39:07

你有两个选择。将其安装在应用程序容器中,或将memcached安装为独立容器。

选项1

您可以添加一个命令来在应用程序的libmemcached上安装Dockerfile

如果您正在使用某种基于ubuntu的图像或高山

只需加上

代码语言:javascript
复制
RUN apt-get update && apt-get install -y \
        libmemcached11 \
        libmemcachedutil2 \
        libmemcached-dev \
        libz-dev

然后,你可以做pip install pylibmc

选项2

您可以将memcached添加为一个单独的容器。只需加上你的码头-写作

代码语言:javascript
复制
memcached:
  image: memcached
  ports:
    - "11211:11211"

当然,您需要将应用程序容器与memcached容器链接起来。

票数 2
EN

Stack Overflow用户

发布于 2016-09-17 15:31:24

解决这个问题的最简单方法是更新应用程序的Dockerfile,并安装构建python包所需的开发依赖关系。

在ubuntu/debian上,这可能类似于:

代码语言:javascript
复制
apt-get install libmemcached-dev gcc python-dev

第二个(更有利的)选项是在一个单独的容器中为这个包建立一个轮子,然后安装车轮而不是源tarball。这样,您就不必安装任何其他软件包,您的最终映像就会小得多。然而,它需要更多的工作来设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39520061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档