为什么“docker build”在本地映像上失败

时间:2017-10-25 00:13:17

标签: docker dockerfile

可能我错过了一些明显的东西,但有人可以解释一下:

当我拉动并运行图像时,例如cd - 它可以正常运行

现在我想使用Dockerfile并在我的计算机上手动构建它(我可以这样做,对吗?)

所以我将源文件从Github https://github.com/dgraziotin/osx-docker-lampdocker build -t test .下载到解压缩文件夹并运行FROM phusion/baseimage:latest MAINTAINER Daniel Graziotin <daniel@ineed.coffee> ENV REFRESHED_AT 2016-03-29 # based on tutumcloud/tutum-docker-lamp # MAINTAINER Fernando Mayo <fernando@tutum.co>, Feng Honglin <hfeng@tutum.co> ENV DOCKER_USER_ID 501 ENV DOCKER_USER_GID 20 ENV BOOT2DOCKER_ID 1000 ENV BOOT2DOCKER_GID 50 # Tweaks to give Apache/PHP write permissions to the app RUN usermod -u ${BOOT2DOCKER_ID} www-data && \ usermod -G staff www-data && \ useradd -r mysql && \ usermod -G staff mysql RUN groupmod -g $(($BOOT2DOCKER_GID + 10000)) $(getent group $BOOT2DOCKER_GID | cut -d: -f1) RUN groupmod -g ${BOOT2DOCKER_GID} staff # Install packages ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get -y install supervisor wget git apache2 libapache2-mod-php5 mysql-server php5-mysql pwgen php-apc php5-mcrypt zip unzip && \ echo "ServerName localhost" >> /etc/apache2/apache2.conf # needed for phpMyAdmin run php5enmod mcrypt # Add image configuration and scripts ADD start-apache2.sh /start-apache2.sh ADD start-mysqld.sh /start-mysqld.sh ADD run.sh /run.sh RUN chmod 755 /*.sh ADD supervisord-apache2.conf /etc/supervisor/conf.d/supervisord-apache2.conf ADD supervisord-mysqld.conf /etc/supervisor/conf.d/supervisord-mysqld.conf # Remove pre-installed database RUN rm -rf /var/lib/mysql # Add MySQL utils ADD create_mysql_users.sh /create_mysql_users.sh RUN chmod 755 /*.sh # Add phpmyadmin RUN wget -O /tmp/phpmyadmin.tar.gz https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-all-languages.tar.gz RUN tar xfvz /tmp/phpmyadmin.tar.gz -C /var/www RUN ln -s /var/www/phpMyAdmin-4.6.0-all-languages /var/www/phpmyadmin RUN mv /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php ENV MYSQL_PASS:-$(pwgen -s 12 1) # config to enable .htaccess ADD apache_default /etc/apache2/sites-available/000-default.conf RUN a2enmod rewrite # Configure /app folder with sample app RUN mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html ADD app/ /app #Environment variables to configure php ENV PHP_UPLOAD_MAX_FILESIZE 10M ENV PHP_POST_MAX_SIZE 10M # Add volumes for the app and MySql VOLUME ["/etc/mysql", "/var/lib/mysql", "/app" ] EXPOSE 80 3306 CMD ["/run.sh"]

构建过程开始但我看到许多奇怪的错误,如“包php5-mysql不可用”。我尝试了不同的图像,结果相同。如何正确构建本地图像?

UPD:

Dockerfile

char **x;

已解决正如我所理解的,许多自定义图像包含过时/无效的代码,必须尽可能避免。我们应该依靠官方知名和支持的图像。

1 个答案:

答案 0 :(得分:1)

与确切问题无关,但您的Dockerfile可能会使用基于Best Practices for writing Dockerfiles的一些返工。

我想指出ADD与COPY的最佳做法和deprecated MAINTAINER Instruction(您应该使用LABEL维护者=&#34; Daniel Graziotin&#34;)。

同样在你添加phpmyadmin的部分,如果你不在同一层中提取和删除档案(使用多行参数),那么使用RUN而不是ADD是没用的。这也可以在ADD vs COPY最佳实践中找到。

除此之外,我可以说这是一个非常可靠的Dockerfile!可悲的是,由于应用程序而无法工作......