可能我错过了一些明显的东西,但有人可以解释一下:
当我拉动并运行图像时,例如cd
- 它可以正常运行
现在我想使用Dockerfile并在我的计算机上手动构建它(我可以这样做,对吗?)
所以我将源文件从Github https://github.com/dgraziotin/osx-docker-lamp,docker 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;
已解决正如我所理解的,许多自定义图像包含过时/无效的代码,必须尽可能避免。我们应该依靠官方知名和支持的图像。
答案 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!可悲的是,由于应用程序而无法工作......