[fly-iot Feifan IoT] (15) : projet Python IOT open source, résout le problème de la base de données MySQL, emballe et publie l'image dans l'entrepôt docker-hub, réduit la taille et publie la version 2024-01

Préface


Colonne fly-iot Feifan IoT :
https://blog.csdn.net/freewebsys/category_12219758.html

1. Adresse de démonstration vidéo


https://www.bilibili.com/video/BV1Nc411t7RU/?vd_source=4b290247452adda4e56d84b659b0c8a2

[fly-iot] (4) : publication de la version 2024 de l'image du projet Internet des objets IOT, packagée à l'aide de la méthode de construction de Docker pour réduire la taille de l'image Python

Insérer la description de l'image ici

2. Python effectue le packaging Docker et utilise la méthode builder pour réduire la taille de l'image


Fichier docker en miroir :

# 构建后端代码:
# docker build --tag flyiotadm/fly-iot-backend-python:v2024.01 .
# FROM python:3-alpine 使用最新的slim 版本。
# 
FROM python:3.6-slim as builder


# 设置debian的镜像源
RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" > /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list


# 设置python3的镜像源
RUN  pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple && \
pip3 config set install.trusted-host mirrors.aliyun.com 

# 安装需要的lib库
RUN  apt update && apt-get install -y locales libpq-dev python3-dev gcc g++ make

ADD requirements.txt /root/requirements.txt

# 最后安装依赖包,然后删除缓存和 pyc 文件,还可以节省40MB 空间。
RUN cd /root && pip3 install -r requirements.txt && rm -rf /root/.cache/ && \
    cd /usr/local/lib/python3.6/site-packages && find ./ -name *.pyc | xargs rm -f  

# 删除 *.pyc 文件
# python 3.6-slim-server-base ef9e5b350248 689MB
# 大小从 689MB 减少到 652MB
# python 3.6-slim-server-base 7134559c9496 652MB


# 拷贝本地文件到目录
COPY . /data

# service
FROM python:3.6-slim

# 直接使用基础镜像然后拷贝 site-packages 安装包即可。
COPY --from=builder /data /data
COPY --from=builder /usr/local/lib/python3.6/site-packages /usr/local/lib/python3.6/site-packages
COPY --from=builder /usr/local/bin/flask /usr/local/bin/flask
#COPY --from=builder /data/docker-entrypoint.sh /usr/bin/

WORKDIR /data
# 设置python 的环境变量和 fask app文件。
ENV LC_ALL="C.UTF-8" LANG="C.UTF-8"
ENV PYTHONPATH="/data"
ENV FLASK_APP="/data/manage.py"

EXPOSE 7000 7001

ENTRYPOINT ["/data/docker-entrypoint.sh"]

CMD ["/bin/sh"]

3. Publier sur Docker Hub

Publier sur Docker Hub :

docker build --tag flyiotadm/fly-iot-backend-python:v2024.01 .

Une fois la connexion Docker connectée, vous pouvez publier :
 Publier

docker push flyiotadm/fly-iot-backend-python:v2024.01 
The push refers to repository [docker.io/flyiotadm/fly-iot-backend-python]
5f70bf18a086: Layer already exists 
71b22c8679b5: Pushed 
744c6e4e2737: Pushed 
42d08c675c51: Pushing [==================================================>]  189.1MB/189.1MB
c03fac33ac29: Pushed 
61e79b15f086: Layer already exists 
1d8d050c9cb8: Layer already exists 
2119d4d70feb: Layer already exists 
d0fa20bfdce7: Layer already exists 
2edcec3590a4: Layer already exists 

4. Ensuite, vous pouvez commencer à utiliser la nouvelle image

L'intégralité du code docker-compose :
https://gitee.com/fly-iot/docker-compose

...
############### 使用 iot-backend-python 版本 ###############
  iot-backend-python:
    image: flyiotadm/fly-iot-backend-python:v2024.01
    # build:
    #   context: .
    #   dockerfile: docker/DockerfileMysql
    container_name: fly-iot-backend-python
    ports:
        - "7000:7000"
    volumes:
        - "./python-conf/config-mysql.yml:/data/config/config.yml"
        - "../fly-iot-backend-python:/data"
    links:
        - mysql-iot:mysql-iot
    restart: always
    entrypoint: /data/docker-entrypoint.sh
    depends_on:
        - mysql-iot
        - tdengine

Je suppose que tu aimes

Origine blog.csdn.net/freewebsys/article/details/135425745
conseillé
Classement