I have the following Dockerfile
which I need to create an image and run as a kubernetes
deployment
ARG PYTHON_VERSION=3.7
FROM python:${PYTHON_VERSION}
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ARG USERID
ARG USERNAME
WORKDIR /code
COPY requirements.txt ./
COPY manage.py ./
RUN pip install -r requirements.txt
RUN useradd -u "${USERID:-1001}" "${USERNAME:-jananath}"
USER "${USERNAME:-jananath}"
EXPOSE 8080
COPY . /code/
RUN pwd
RUN ls
ENV PATH="/code/bin:${PATH}"
# CMD bash
ENTRYPOINT ["/usr/local/bin/python"]
# CMD ["manage.py", "runserver", "0.0.0.0:8080"]
And I create the image, tag it and pushed to my private repository.
And I have the kubernetes
manifest file as below:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
tier: my-app
name: my-app
namespace: my-app
spec:
replicas: 1
selector:
matchLabels:
tier: my-app
template:
metadata:
labels:
tier: my-app
spec:
containers:
- name: my-app
image: "<RETRACTED>.dkr.ecr.eu-central-1.amazonaws.com/my-ecr:webv1.11"
imagePullPolicy: Always
args:
- "manage.py"
- "runserver"
- "0.0.0.0:8080"
env:
- name: HOST_POSTGRES
valueFrom:
configMapKeyRef:
key: HOST_POSTGRES
name: my-app
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
key: POSTGRES_DB
name: my-app
- name: POSTGRES_USER
valueFrom:
configMapKeyRef:
key: POSTGRES_USER
name: my-app
- name: USERID
valueFrom:
configMapKeyRef:
key: USERID
name: my-app
- name: USERNAME
valueFrom:
configMapKeyRef:
key: USERNAME
name: my-app
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
key: POSTGRES_PASSWORD
name: my-app
ports:
- containerPort: 8080
resources:
limits:
cpu: 1000m
memory: 1000Mi
requests:
cpu: 00m
memory: 1000Mi
When I run the deployment above, the pod kills everytime and when I try to see the logs, this is all I see.
exec /usr/local/bin/python: exec format error
This is a simple django
python application.
What is interesting is, this is working fine with docker-compose
as below:
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
web:
build:
context: .
args:
USERID: ${USERID}
USERNAME: ${USERNAME}
command: manage.py runserver 0.0.0.0:8080
volumes:
- .:/code
ports:
- "8080:8080"
environment:
- POSTGRES_NAME=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
env_file:
- .env
Can someone help me with this?
1条答案
按热度按时间vxqlmq5t1#
尝试使用以下方法检查映像体系结构
如果您看到类似以下的内容,
这与您的群集体系结构不同。则必须在与群集具有相同体系结构的计算机上构建映像。