为什么“dockerbuild设”失败的本地形象

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

当我拉和运行一个图像,例如docker pull dgraziotin/lamp && docker run -t -i -p 80:80 -p 3306:3306 --name osxlamp dgraziotin/lamp – 名称docker pull dgraziotin/lamp && docker run -t -i -p 80:80 -p 3306:3306 --name osxlamp dgraziotin/lamp – 它工作得很好

现在我想玩Dockerfile并在我的电脑上手动构build它(我可以这样做,对不对?)

所以我从Github下载源文件https://github.com/dgraziotin/osx-docker-lamp,cd到解压后的文件夹并运行docker build -t test .

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

UPD:

Dockerfile

 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"] 

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

与确切的问题无关,但是你的Dockerfile可以使用一些基于最佳实践写作Dockerfiles的返工 。

我想指出ADD与COPY的最佳做法和不赞成使用的MAINTAINER指令 (您应该使用LABEL维护者=“Daniel Graziotin”)。

同样在你添加phpmyadmin的地方,如果你不提取和删除同一图层中的档案(使用多行参数),使用RUN而不是ADD是没有用的。 这也可以在ADD和COPY最佳实践下find。

除此之外,我可以说这是一个非常可靠的Dockerfile! 伤心,因为应用程序将无法正常工作…