是否可以在入口点连接到外部容器并将数据库转储上传到它?
我总是在执行此行时 web_1 以代码 0 退出:mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < magento-sample-data-1.9。 1.0/magento_sample_data_for_1.9.1.0.sql install-sampledata from Dockerfile
但是,我可以在创建容器后执行 docker exec -it <> bash,在那里执行 install-sampledata 并且它可以工作
我有这样的docker-compose
version: '2.1'
services:
db:
image: mysql:5.6.23
volumes:
- db-data:/var/lib/mysql/data
env_file:
- env
web:
build: .
ports:
- "8089:80"
links:
- db
env_file:
- env
tty: true
volumes:
db-data:
docker 文件
FROM alexcheng/magento
ENTRYPOINT install-sampledata
和安装示例数据文件
#!/usr/bin/env bash
cd /tmp
cp /opt/magento-sample-data-1.9.1.0.tgz .
tar xvf magento-sample-data-1.9.1.0.tgz
cp -R magento-sample-data-1.9.1.0/media/* /var/www/htdocs/media/
cp -R magento-sample-data-1.9.1.0/skin/* /var/www/htdocs/skin/
chown -R www-data:www-data /var/www/htdocs/media
mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < magento-sample-data-1.9.1.0/magento_sample_data_for_1.9.1.0.sql
最佳答案
问题是:您的 ENTRYPOINT
是 install-sampledata
:一个将运行一个 mysql 命令并...退出的脚本!
此时容器将停止。
如果可能,最好调用那个脚本,然后call mysql as in the mysql Dockerfile , 以便让前台进程继续运行。
或者你可以看看multi-stage build ,以便使用已经内置的先决条件文件构建镜像。
关于mysql - Dockerfile - 在入口点部署 mysql 转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48492166/