簡體   English   中英

Dockerfile 對於 golang 和 python

[英]Dockerfile for golang and python

有一個 django 項目已經在運行。 現在在代碼中,我需要在 subprocess 模塊中執行以下命令:

cmd = f's5cmd cp {obj1} {obj2}'

現在在本地這段代碼運行良好。 但在部署代碼后無法找到 s5cmd。 根據 s5cmd 文檔,它是用 golang 編寫的,並且在我的系統上安裝了它,這就是它工作正常的原因。 所以我更新了 dockerfile 但仍然無法正常工作。

FROM python:3.6
COPY ./requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt
COPY . /apps/project/
WORKDIR /apps/project/project/
EXPOSE 8000
CMD gunicorn project.wsgi:application --timeout 3000 --access-logfile '-' -w 3 -k gevent --bind=0.0.0.0:8000

這個 dockerfile 正在工作。 現在更新后的 dockerfile 看起來像這樣,但它不起作用,即 s5cmd 命令不適用於 docker。

FROM python:3.6.7-alpine3.6

# author of file
LABEL maintainer="Baktawar"



# Install native libraries, required for numpy
RUN apk --no-cache add musl-dev linux-headers g++
RUN apk add --no-cache --virtual .build-deps bash gcc musl-dev openssl go
RUN apk update && apk add ca-certificates wget && update-ca-certificates
RUN wget -O go.tgz https://golang.org/dl/go1.15.2.src.tar.gz
RUN tar -C /usr/local -xzf go.tgz
RUN cd /usr/local/go/src/
RUN ./make.bash
RUN export PATH="/usr/local/go/bin:$PATH"
RUN export GOPATH=/opt/go/
RUN export PATH=$PATH:$GOPATH/bin
RUN apk del .build-deps
RUN go version
RUN apk update && apk add git && go get github.com/peak/s5cmd && s5cmd
# Upgrade pip
RUN pip install --upgrade pip

COPY ./requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt && pip install psycopg2-binary
COPY . /apps/project/
WORKDIR /apps/project/project/
EXPOSE 8000
CMD gunicorn project.wsgi:application --timeout 3000 --access-logfile '-' -w 3 -k gevent --bind=0.0.0.0:8000

Requirements.txt文件

boto3==1.12.39
botocore==1.15.39
certifi==2020.6.20
chardet==3.0.4
Django==2.2
djangorestframework==3.11.0
docutils==0.15.2
gevent==20.5.1
greenlet==0.4.16
gunicorn==20.0.4
idna==2.9
jmespath==0.10.0
json-logging==1.2.0
numpy==1.19.0
pandas==1.0.5
python-dateutil==2.8.1
pytz==2020.1
requests==2.23.0
s3transfer==0.3.3
six==1.15.0
SQLAlchemy==1.3.16
sqlparse==0.3.1
urllib3==1.25.9
zope.event==4.4
zope.interface==5.1.0
pytest==6.0.1

Dockerfile 有幾個問題:

  1. RUN cd /usr/local/go/src/將不起作用,應將其替換為WORKDIR /usr/local/go/src或與下一個命令內聯
  2. RUN export PATH... (等)也不會工作,應替換為ENV PATH...

以下 Dockerfile 應該可以工作(只是 go/s5cmd 部分)

RUN apk --no-cache add musl-dev linux-headers g++
RUN apk add --no-cache --virtual .build-deps bash gcc musl-dev openssl go
RUN apk update && apk add ca-certificates wget && update-ca-certificates
RUN wget -O go.tgz https://golang.org/dl/go1.15.2.src.tar.gz
RUN tar -C /usr/local -xzf go.tgz
RUN cd /usr/local/go/src/ && ./make.bash
ENV PATH "/usr/local/go/bin:$PATH"
ENV GOPATH "/opt/go/"
ENV PATH "$PATH:$GOPATH/bin"
RUN apk del .build-deps
RUN go version
RUN apk update && apk add git && go get github.com/peak/s5cmd && s5cmd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM