3
我希望在一个容器中运行一个命令链接的容器启动后。在Dockerfile中运行一个命令__after__启动一个链接的容器
比方说,我想运行php app/console doctrine:schema:create
(或使用预填充我的数据库架构......不一定PHP/symfony的,但没有作为可数据库容器能运行一个SQL脚本简单的任何其他应用程序)尽快建立了我的容器,但显然在之后数据库容器已经建好并且已经安装了应用程序卷。
初始化脚本:
- 复杂 - >所以我需要的东西比简单的SQL或bash脚本更复杂的支持
- 慢 - >所以需要对其进行一次当运行容器的设置
这是我docker-compose.yml
application:
build: code
volumes:
- ./symfony:/var/www/symfony
- ./logs/symfony:/var/www/symfony/app/logs
tty: true
db:
image: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
MYSQL_USER: root
MYSQL_PASSWORD: longtake
php:
build: php-fpm
expose:
- 9000:9000
volumes_from:
- application
links:
- db
nginx:
build: nginx
ports:
- 80:80
links:
- php
volumes_from:
- application
volumes:
- ./logs/nginx/:/var/log/nginx
相关Dockerfile
是PHP-FPM/Dockerfile这可能是这样的:
FROM debian:jessie
RUN apt-get update && apt-get upgrade && apt-get install -y php5-common php5-cli php5-fpm php5-mcrypt php5-mysql php5-apcu php5-gd php5-imagick php5-curl php5-intl
# This should be executed after the application volume is ready
RUN cd /var/www/symfony && php app/console doctrine:schema:create
ADD symfony.ini /etc/php5/fpm/conf.d/
ADD symfony.ini /etc/php5/cli/conf.d/
ADD symfony.pool.conf /etc/php5/fpm/pool.d/
RUN usermod -u 1000 www-data
CMD ["php5-fpm", "-F"]
EXPOSE 9000
docker-compose build
回报
Step 4 : RUN cd /var/www/symfony && php app/console doctrine:schema:create
---> Running in 629ab2771cb3
/bin/sh: 1: cd: can't cd to /var/www/symfony
Service 'php' failed to build: The command '/bin/sh -c cd /var/www/symfony && php app/console doctrine:schema:create' returned a non-zero code: 2
你应该看看官方docker wordpress和它使用的入口点脚本。 – mgor