Dockerfile Image命令'/ bin / sh -c apt-get install -y mysqld-server'返回非零代码:100

时间:2017-09-20 07:18:11

标签: php mysql ubuntu docker nginx

我想使用此规范制作一个泊坞窗图像:

  1. Ubuntu:16.04 /最新
  2. PHP 7.x
  3. nginx:最新的mySQL 5.x
  4. 暴露端口80& 443
  5. 目录/来源
  6. 可选:

    1. VIM
    2. PHP Composer
    3. 我的Dockerfile:

      # Download base image ubuntu 16.04
      FROM ubuntu:16.04
      
      # Update Ubuntu Software repository
      RUN apt-get update
      
      # Install PHP, nginx, mySQL
      RUN apt-get install -y nginx php7.0-fpm && \
      rm -rf /var/lib/apt/lists/*
      
      # Install MySQL and set default root password
      RUN echo 'mysql-server mysql-server/root_password  password mypassword' | debconf-set-selections
      RUN echo 'mysql-server mysql-server/root_password_again password mypassword' | debconf-set-selections
      RUN apt-get install -y mysql-server
      
      # Define the ENV variable
      ENV nginx_vhost /etc/nginx/sites-available/default
      ENV php_conf /etc/php/7.0/fpm/php.ini
      ENV nginx_conf /etc/nginx/nginx.conf
      
      # Enable php-fpm on nginx virtualhost configuration
      COPY default ${nginx_vhost}
      RUN sed -i -e 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' ${php_conf} && \
      echo "\ndaemon off;" >> ${nginx_conf}
      
      RUN mkdir -p /run/php && \
      chown -R www-data:www-data /var/www/html && \
      chown -R www-data:www-data /run/php
      
      # Volume configuration
      VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
      
      # Configure Services and Port
      COPY start.sh /start.sh
      CMD ["./start.sh"]
      
      EXPOSE 80 443
      

      我在构建它时收到此错误消息

      Sending build context to Docker daemon 5.632 kB
      Step 1 : FROM ubuntu:16.04
       ---> 2d696327ab2e
      Step 2 : RUN apt-get update
       ---> Using cache
       ---> b58709c2b7b9
      Step 3 : RUN apt-get install -y nginx php7.0-fpm &&     rm -rf /var/lib/apt/lists/*
       ---> Using cache
       ---> 3d58b4fac924
      Step 4 : RUN echo 'mysql-server mysql-server/root_password  password mypassword' | debconf-set-selections
       ---> Using cache
       ---> 85256efe3bd3
      Step 5 : RUN echo 'mysql-server mysql-server/root_password_again password mypassword' | debconf-set-selections
       ---> Using cache
       ---> d1f71eeacbe2
      Step 6 : RUN apt-get install -y mysqld-server
       ---> Running in 9dba6ce0c59a
      Reading package lists...
      Building dependency tree...
      Reading state information...
      E: Unable to locate package mysqld-server
      The command '/bin/sh -c apt-get install -y mysqld-server' returned a non-zero code: 100
      

      我该如何解决?

      由于

1 个答案:

答案 0 :(得分:0)

您的问题在于行rm -rf /var/lib/apt/lists/*。您正在删除apt-get update提取的列表。然后尝试使用apt安装包。这将失败。

您需要在安装mysql-server的行之后移动rm -rf /var/lib/apt/lists/

# Download base image ubuntu 16.04
FROM ubuntu:16.04

# Update Ubuntu Software repository
RUN apt-get update

# Install PHP, nginx, mySQL
RUN apt-get install -y nginx php7.0-fpm

# Install MySQL and set default root password
RUN echo 'mysql-server mysql-server/root_password  password mypassword' | debconf-set-selections
RUN echo 'mysql-server mysql-server/root_password_again password mypassword' | debconf-set-selections
RUN apt-get install -y mysql-server && rm -rf /var/lib/apt/lists/*

# Define the ENV variable
ENV nginx_vhost /etc/nginx/sites-available/default
ENV php_conf /etc/php/7.0/fpm/php.ini
ENV nginx_conf /etc/nginx/nginx.conf

# Enable php-fpm on nginx virtualhost configuration
COPY default ${nginx_vhost}
RUN sed -i -e 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' ${php_conf} && \
echo "\ndaemon off;" >> ${nginx_conf}

RUN mkdir -p /run/php && \
chown -R www-data:www-data /var/www/html && \
chown -R www-data:www-data /run/php

# Volume configuration
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]

# Configure Services and Port
COPY start.sh /start.sh
CMD ["./start.sh"]