我有一个使用memcached的项目。因此,当docker试图"pip install pylibmc“时,库无法找到libmemcached,因为它尚未安装。我如何组织我的对接者-Compose.yml,或者也许我必须做些什么对码头文件?
现在,我的docker-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发布于 2016-09-16 00:39:07
你有两个选择。将其安装在应用程序容器中,或将memcached安装为独立容器。
选项1
您可以添加一个命令来在应用程序的libmemcached上安装Dockerfile。
如果您正在使用某种基于ubuntu的图像或高山
只需加上
RUN apt-get update && apt-get install -y \
libmemcached11 \
libmemcachedutil2 \
libmemcached-dev \
libz-dev然后,你可以做pip install pylibmc
选项2
您可以将memcached添加为一个单独的容器。只需加上你的码头-写作
memcached:
image: memcached
ports:
- "11211:11211"当然,您需要将应用程序容器与memcached容器链接起来。
发布于 2016-09-17 15:31:24
解决这个问题的最简单方法是更新应用程序的Dockerfile,并安装构建python包所需的开发依赖关系。
在ubuntu/debian上,这可能类似于:
apt-get install libmemcached-dev gcc python-dev第二个(更有利的)选项是在一个单独的容器中为这个包建立一个轮子,然后安装车轮而不是源tarball。这样,您就不必安装任何其他软件包,您的最终映像就会小得多。然而,它需要更多的工作来设置。
https://stackoverflow.com/questions/39520061
复制相似问题