2016-11-17 12 views
0

我提出有這個Dockerfile泊塢入口點爲什麼我得到

# Dockerfile for moodle instance. 
# Forked from Jonathan Hardison's <[email protected]> docker version. https://github.com/jmhardison/docker-moodle 

FROM php:7.0-apache 
MAINTAINER Dimitrios Desyllas <[email protected]> 
#Original Maintainer Jon Auer <[email protected]> 

VOLUME ["/var/moodledata"] 
EXPOSE 80 


# Let the container know that there is no tty 
ENV DEBIAN_FRONTEND noninteractive 

# Moodle Info 
ENV MOODLE_URL http://0.0.0.0 
ENV MOODLE_ADMIN admin 
ENV MOODLE_ADMIN_PASSWORD Admin~1234 
ENV MOODLE_ADMIN_EMAIL [email protected] 

#DATABASE SETTINGS 

#Supported 'pgsql', 'mariadb', 'mysqli', 
ENV MOODLE_DB_TYPE 'mysqli' 
ENV MOODLE_DB_HOST '' 
ENV MOODLE_DB_USER '' 
ENV MOODLE_DB_PASSWORD '' 
ENV MOODLE_DB_NAME 'moodle' 
ENV MOODLE_DB_PORT '3306' 


RUN echo "Installing php and external tools" 
RUN apt-get update && \ 
     apt-get -f -y install mysql-client pwgen aspell unzip wget libxmlrpc-c++8-dev libxml2-dev libpng-dev libicu-dev libmcrypt-dev &&\ 
     docker-php-ext-install mysqli && \ 
     docker-php-ext-install pdo pdo_mysql && \ 
     docker-php-ext-install xmlrpc && \ 
     docker-php-ext-install mbstring && \ 
     docker-php-ext-install zip && \ 
     docker-php-ext-install xml && \ 
     docker-php-ext-install intl && \ 
     docker-php-ext-install soap && \ 
     docker-php-ext-install mcrypt && \ 
     docker-php-ext-install gd && \ 
     echo "Installing moodle" && \ 
     wget https://download.moodle.org/download.php/direct/stable31/moodle-latest-31.tgz -O /tmp/moodle-latest-31.tgz && \ 
     rm -rf /var/www/html/index.html && \ 
     tar -xvf /tmp/moodle-latest-31.tgz -C /tmp && \ 
     mv /tmp/moodle/* /var/www/html/ 

COPY moodle-config.php /var/www/html/config.php 
COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh 
RUN chmod +x /usr/local/bin/entrypoint.sh 

# Cleanup 
RUN apt-get clean autoclean && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/* /var/lib/cache/* /var/lib/log/* 

ENTRYPOINT /usr/local/bin/entrypoint.sh 
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 

但對於以下entrypoint.sh腳本某種原因,我得到錯誤的參數給exec

#!/bin/bash 

echo "Installing moodle" 

echo "Fixing files and permissions" 

chown -R www-data:www-data /var/www/html 
find /var/www/html -iname "*.php" | xargs chmod +x 

echo "placeholder" > /var/moodledata/placeholder 
chown -R www-data:www-data /var/moodledata 
chmod 777 /var/moodledata 

echo "Setting up database" 
: ${MOODLE_DB_TYPE:='mysqli'} 

if [ "$MOODLE_DB_TYPE" = "mysqli" ] || [ "$MOODLE_DB_TYPE" = "mariadb" ]; then 

    set ${MOODLE_DB_HOST:=$DB_PORT_3306_TCP_ADDR} 

    echo "Waiting for mysql to connect.." 
    while ! mysqladmin ping -h"$MOODLE_DB_HOST" --silent; do 
     sleep 1 
    done 

    echo "Setting up the database connection info" 
: ${MOODLE_DB_USER:=${DB_ENV_MYSQL_USER:-root}} 
: ${MOODLE_DB_NAME:=${DB_ENV_MYSQL_DATABASE:-'moodle'}} 
: ${MOODLE_DB_PORT:=${DB_PORT_3306_TCP_PORT}} 

    if [ "$MOODLE_DB_USER" = 'root' ]; then 
: ${MOODLE_DB_PASSWORD:=$DB_ENV_MYSQL_ROOT_PASSWORD} 
    else 
: ${MOODLE_DB_PASSWORD:=$DB_ENV_MYSQL_PASSWORD} 
    fi 

    if [ -z "$MOODLE_DB_PASSWORD" ]; then 
    echo >&2 'error: missing required MOODLE_DB_PASSWORD environment variable' 
    echo >&2 ' Did you forget to -e MOODLE_DB_PASSWORD=... ?' 
    echo >&2 
    exit 1 
    fi 

else 
    echo >&2 "This database type is not supported" 
    echo >&2 "Did you forget to -e MOODLE_DB_TYPE='mysqli' ^OR^ -e MOODLE_DB_TYPE='mariadb' ?" 
    exit 1 
fi 

echo "Installing moodle" 
php /var/www/html/admin/cli/install_database.php \ 
      --adminemail=${MOODLE_ADMIN_EMAIL} \ 
      --adminuser=${MOODLE_ADMIN} \ 
      --adminpass=${MOODLE_ADMIN_PASSWORD} \ 
      --agree-license 

exec "[email protected]" 
定製泊塢窗圖像錯誤的參數

exec "[email protected]""[email protected]"值得到一個碼頭的IP而不是評論來啓動Apache /usr/sbin/apache2ctl -D FOREGROUND,我不明白爲什麼會發生這種情況。

原來的工作是在https://github.com/ellakcy/docker-moodle

+0

請粘貼您用來構建和運行此圖像的命令。 – jazgot

回答

1

從腳本行set ${MOODLE_DB_HOST:=$DB_PORT_3306_TCP_ADDR}刪除set

$ help set 
set: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] 
    Set or unset values of shell options and positional parameters.