当我试图通过运行上一个团队在我的ubuntu16.04中编写的脚本来构建我的一个项目时
sudo ./build
我得到错误:
Step 8/24 : RUN service mysql start
---> Running in 3djjk653642d
* Starting MySQL database server mysqld
...fail!
The command '/bin/sh -c service mysql start' returned a non-zero code: 1
我的dockerfile看起来像:
COPY schema.sql /tmp/schema.sql
### User with ALL accesses (winter/toor)
RUN service mysql start
RUN mysql < /tmp/schema.sql
RUN mysql -e "CREATE USER 'winter'@'%' IDENTIFIED BY 'toor'"
RUN service mysql start && mysql -e "GRANT ALL ON its.* TO 'winter'@'%'"
拜托,有什么帮助吗?
1条答案
按热度按时间nszi6y051#
RUN
dockerfile中的语句用于运行一个命令,该命令将对文件系统产生一些影响,然后保存在另一层中。像这样启动服务是不正常的,因为内存的状态(服务运行的地方)没有存储在映像中,它只能在运行的容器中运行。
通常的方法是编写bash脚本(称为
start.sh
,或类似的内容),将其复制到图像中,然后从ENTRYPOINT
/CMD
dockerfile末尾的行。此操作将在中创建容器时运行docker run ...
命令开始.sh:
dockerfile文件:
请阅读这里,了解一下两者之间的区别
ENTRYPOINT
&CMD
以及什么时候应该使用它们。更好的方法是使用docker hub的官方mysql图像。通过使用环境变量,您可能可以实现所需的所有功能。