我正在使用以下docker-compose配置来对lemp堆栈进行docker化:
mariadb:
container_name: lemp-mariadb
image: mariadb
#user: $UID
environment:
- MYSQL_ROOT_PASSWORD=root.maria
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
volumes:
- ./db:/var/lib/mysql
phpfpm:
container_name: lemp-fpm
image: php:7-fpm
volumes:
- ./code:/code
links:
- mariadb
command: docker-php-ext-install mysqli
nginx:
container_name: lemp-nginx
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./code:/code
- ./site.conf:/etc/nginx/conf.d/default.conf
links:
- phpfpm
command: nginx -g 'daemon off;'
问题在于配置行:
command: docker-php-ext-install mysqli
如果我在docker-compose up例程中对此行进行注释,它可以正常运行,并使3台机器处于运行状态,我所要做的就是通过docker exec在lemp-fpm机器上运行以下命令:
docker exec lemp_phpfpm_1 docker-php-ext-install mysqli
没有错误,我可以使用mysqli扩展名连接到数据库。当通过docker-compose运行同一命令时,lemp-fpm实例以0错误代码退出。问题是为什么?解决方法是什么?
答案 0 :(得分:0)
Docker容器应在指定的“命令”完成后退出。如果您希望容器在命令完成后留下来,请另外提供一些其他命令,例如tail命令保持打开状态。
您的另一种选择是在docker映像构建期间运行“ docker-php-ext-install mysqli”并构建您自己的容器映像。然后,仅使用“ tail -f / dev / null”作为“命令行”运行容器。