我使用了一个非常简单的docker设置,包括docker-compose和docker-sync。我有以下文件:
搬运工-撰写-dev.yml
>>> data.max().compute()
x 5.38114
y 5.33796
z 5.25661
txt j
dtype: object
搬运工-compose.yml
version: "2"
services:
apache:
volumes:
- ./docker-config/vhost:/etc/apache2/sites-enabled/000-default.conf
- rr-sync:/var/www/html:nocopy # nocopy is important
volumes:
rr-sync:
external: true
搬运工-sync.yml
version: '2'
services:
apache:
image: bylexus/apache-php7
ports:
- 80:80
db:
image: orchardup/mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: rr
我使用的图像是version: "2"
options:
verbose: true
syncs:
rr-sync: # tip: add -sync and you keep consistent names as a convention
src: './src'
sync_excludes: ['.git']
,它不支持curl,也没有像容器中安装vim这样的工具。
问题是,如何安装curl和vim但是继续使用此图像进行apache?我需要在上面的文件中更改什么?
感谢。
答案 0 :(得分:7)
将您自己的Dockerfile
添加到基于所需基本图像构建的项目中。在此文件中,添加您自己的包(例如,curl和vim):
FROM bylexus/apache-php7
RUN apt-get install -y curl vim
然后,在docker-compose.yml
文件中,请勿使用image
属性,而应使用build
property,而不是:
version: '2'
services:
apache:
build: .
ports:
- 80:80
<小时/> 免责声明:当然,添加新软件包的确切方法取决于基本映像。例如,在这种情况下,
bylexus/apache-php7
图像构建在ubuntu:16.10
图像上(如respective Dockerfile
中所示),因此您可以使用Ubuntu的包管理工具。 bylexus/apache-php7
以外的图像可能会与其他包管理器一起使用其他基本发行版。)
答案 1 :(得分:0)
你可以做以下两件事之一:
FROM bylexus/apache-php7
RUN apt-get update && \
apt-get dist-upgrade -y && \
apt-get install -y \
curl \
vim
您构建此图像并在composefile
中使用它docker-compose exec apache bash
然后安装所需的工具。请注意,在这种情况下,如果删除容器然后创建,则需要再次执行此操作
(您可以使用卷来缓解此问题,但可执行文件是从/usr/bin/vim
到其他目录的软链接,因此您必须为包含可执行链接的每个目录使用卷
或直接重定向链接...)