mac os
docker で opencv -python を使いたく docker-compose build しています。
この画像の状況が40分続いています。たまに一行更新されるのですが、pipのupdateやdocker imageの変更や、opencv-pythonのバージョンの変更とう試したのですが、何度祭ビルドしても、20分、30分と、かかってしまいます。
localで open-cvをダウンロードしたときは1分ほどだったと記憶しているのですが、何かアドバイスいただけないでしょうか?
試行錯誤して、5時間ほどかかってしまいました。
FROM python:3.8.0 # Adding backend directory to make absolute filepaths consistent across services WORKDIR /app/backend # Install Python dependencies COPY requirements.txt /app/backend RUN apt-get update && apt-get upgrade -y RUN pip install --upgrade pip RUN pip install --upgrade setuptools # OpenCV RUN apt-get install -y libgl1-mesa-glx libglib2.0-0 libsm6 libxrender1 libxext6 RUN pip install opencv-python RUN pip install opencv-contrib-python #docker imageを alpine から python:3.8に変更したので、 #このRUNのapk が使えないためコードを変更しなくてはいけない RUN \ apk add bash && \ apk add --no-cache postgresql-libs && \ apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev && \ apk add build-base libffi-dev && \ pip3 install --upgrade pip -r requirements.txt && \ apk --purge del .build-deps # Add the rest of the code COPY . /app/backend COPY ./scripts/ /app/ # Make port 8000 available for the app ENV PORT 8000 EXPOSE 8000 # Be sure to use 0.0.0.0 for the host within the Docker container, # otherwise the browser won't be able to find it RUN ["chmod", "+x", "/app/entrypoint-dev.sh"] ENTRYPOINT [ "/app/entrypoint-dev.sh" ] # clearn RUN rm -rf /var/lib/apt/lists/*
docker
1# Use an official Python runtime as a parent image 2FROM python:3.7-alpine 3 4# Adding backend directory to make absolute filepaths consistent across services 5WORKDIR /app/backend 6 7# Install Python dependencies 8COPY requirements.txt /app/backend 9RUN \ 10 apk update && \ 11 apk upgrade && \ 12 apk add bash && \ 13 apk add --no-cache postgresql-libs && \ 14 apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev && \ 15 apk add build-base libffi-dev && \ 16 pip3 install --upgrade pip -r requirements.txt && \ 17 apk --purge del .build-deps 18 19# Add the rest of the code 20COPY . /app/backend 21COPY ./scripts/ /app/ 22 23# Make port 8000 available for the app 24ENV PORT 8000 25EXPOSE 8000 26 27# Be sure to use 0.0.0.0 for the host within the Docker container, 28# otherwise the browser won't be able to find it 29RUN ["chmod", "+x", "/app/entrypoint-dev.sh"] 30ENTRYPOINT [ "/app/entrypoint-dev.sh" ] 31
requirements.txt
1opencv-python==4.6.0.66 2Django==2.2.9 3psycopg2==2.8.4 4whitenoise==4.1.4 5dj-database-url==0.5.0 6beautifulsoup4==4.10.0 7requests>=2.21.0 8selenium==4.1.3
alpine のせいかも?
https://future-architect.github.io/articles/20200513/
ありがとうございます。
https://dendenblog.xyz/opencv-dockerfile/
こちらのサイトのdocker fileはビルドできました。
ただ、私のdocker fileではapk を使っていて、apt-getに変更する際に色々とわからないことがあって、そちらの処理をしつつ、何かアドバイスをいただけないか待ってみます。
質問者さんの Dockerfile の先頭には FROM python:3.7-alpine とありますが、これは Alpine Linux というディストリビューションをもとにしています。が、Alpine Linux では上の記事の通り libc (Linux の実行プログラムを動かすための基本的なライブラリ) が他とは違うため、メモリ管理の性能が良くなかったり、そもそも他のディストリビューションならビルド済みのバイナリが使えるのに Alpine Linux では使えなくてわざわざビルドする羽目になったりする、ということだと思われます。
ので、たぶんベースイメージを FROM python:3.8.0 (ちょっと古いけど…) とかにすれば、たぶん ubuntu か debian なので、apt-get を使えるのでは…。(docker も python も詳しくないので、そのくらいしか言えませんが。)
参考にしたリンク通りでbuildできました。
今は、apt-getでのdocker fileの書き方を調べている最中です。
ありがとうございます。
回答1件
あなたの回答
tips
プレビュー