我有一个运行一些服务的docker-compose文件。
<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="800" height="600" style="border:1px solid #c3c3c3;"></canvas>
</body>
</html>
我想添加另一个服务,该服务将是一个容器,可以在其中运行CLI命令(作曲家,drupal的drush,php等)。
以下Dockerfile是我最初定义cli服务的方式,但是它在运行后立即停止。如何定义它,使其成为docker-compose的一部分,共享安装的卷,并且可以交互地连接到它并在其上运行CLI命令?
services:
cli:
build:
context: .
dockerfile: docker/cli/Dockerfile
volumes:
- ./drupal8site:/var/www/html/drupal8site
drupal:
container_name: drupal
build:
context: .
dockerfile: docker/DockerFile.drupal
args:
DOC_ROOT: /var/www/html/drupal8site
ports:
- 80:80
volumes:
- ./drupal8site:/var/www/html/drupal8site
restart: always
environment:
APACHE_DOCUMENT_ROOT: /var/www/html/drupal8site/web
mysql:
image: mysql:5.7
ports:
- 3306:3306
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
谢谢, 雅伦
答案 0 :(得分:1)
如果要在docker映像上运行自动化脚本,这显然是ci管道的工作。您可以使用CloudFoundry或OpenStack来做到这一点。
但是这篇文章还有很多其他问题:
1。)我如何共享已安装的卷:
您可以将带有-v选项的卷传递到容器。例如:
docker run -it -d -v $(pwd)/localFolder:/exposedFolderFromDocker mydockerhub/myawesomeimage
2。)我可以以交互方式连接到它并在其上运行CLI命令
docker exec -it docker_cli_1 bash
我建议将docker-image的功能实现到各个docker-images Dockerfile。例如,复制并运行准备好的shell脚本:
# your Dockerfile
FROM php:7.2-cli
#various programs
RUN apt-get update \
&& apt-get install vim --assume-yes \
&& apt-get install git --assume-yes \
&& apt-get install mysql-client --assume-yes
# individual changes
COPY your_script.sh /
RUN chown root:root /your_script.sh && \
chmod 0755 /your_script.sh
CMD ["/your_script.sh"]
# a folder to expose
VOLUME /exposedFolderFromDocker
CMD ["bash"]