2017-05-11 8 views
0

私のコードは、これは私が窓やUbuntuの両方でアプリを実行したときに動作しますが、ドッキングウィンドウ上で実行すると.upload_fileは()を見つけることができないため、失敗しドッカーはファイル作成をどのように処理しますか?

cmd = "mongoexport " \ 
      "--host " + url + \ 
      " --port " + str(port) + \ 
      " --username " + user + \ 
      " --password " + password + \ 
      " --db " + db_name + \ 
      " --collection " 


temp = cmd + name + " --out dump/" + name + ".json" 
subprocess.call(temp, shell=True) 
self.client.upload_file("dump/" + name + ".json", "devopsmlabbackup", "dump/" + db_name + "/" + name + "/" + str(curr_archive_count+1) + ".json") 

S3バケットにアップロードし、ローカルフォルダにMongoのコレクションをダンプディレクトリ。

Dockerfile:私はモンゴを輸入し、それが働いたか

FROM python:2.7 

# Install uWSGI 
RUN pip install uwsgi 

# Standard set up Nginx 
ENV NGINX_VERSION 1.9.11-1~jessie 

RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \ 
    && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \ 
    && apt-get update \ 
    && apt-get -y install sudo \ 
    && apt-get -y install mongodb \ 
    && apt-get install -y ca-certificates nginx=${NGINX_VERSION} gettext-base \ 
    && rm -rf /var/lib/apt/lists/* 
# forward request and error logs to docker log collector 
RUN ln -sf /dev/stdout /var/log/nginx/access.log \ 
    && ln -sf /dev/stderr /var/log/nginx/error.log 
EXPOSE 80 443 
# Finished setting up Nginx 

# Make NGINX run on the foreground 
RUN echo "daemon off;" >> /etc/nginx/nginx.conf 
# Remove default configuration from Nginx 
RUN rm /etc/nginx/conf.d/default.conf 
# Copy the modified Nginx conf 
COPY nginx.conf /etc/nginx/conf.d/ 
# Copy the base uWSGI ini file to enable default dynamic uwsgi process number 
COPY uwsgi.ini /etc/uwsgi/ 

# Install Supervisord 
RUN apt-get update && apt-get install -y supervisor \ 
&& rm -rf /var/lib/apt/lists/* 
# Custom Supervisord config 
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf 

COPY . /deploy 
WORKDIR /deploy 
RUN pip install -r /deploy/requirements.txt 

CMD ["/usr/bin/supervisord"] 
+0

Dockerfileで 'WORDIR'ディレクティブを使用していますか? Dockerファイルを投稿する – user2915097

+0

@ user2915097 WORKDIR/deploy –

+1

このコードはどのように実行されますか?スーパーバイザーまたはuwsgi Webサーバーの一部の下で実行されているバックグラウンドプロセスの一部ですか? self.client.upload_file、スーパバイザ設定、およびuwsgi設定で受け取った完全なエラーを投稿することは重要です。 –

答えて

0

を変更しました。 Dockerfile:

#Step 1: Import the MongoDB public key 
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 
#Step 2: Generate a file with the MongoDB repository url 
RUN echo "deb http://repo.mongodb.org/apt/ubuntu $(cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2)/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list 
#Step 3: Refresh the local database with the packages 
RUN apt-get update 
#Step 4: Install the last stable MongoDB version and all the necessary packages on our system 
RUN apt-get -y install mongodb-org 
関連する問題