在dockerhub上发现了一些更加小的官方镜像:
link: https://registry.hub.docker.com/_/python?tab=tags&page=1&ordering=last_updated
docker pull python:3.7.11-slim 113MB
docker pull python:3.7.11-alpine3.13 42.5MB
Dockerfile:
FROM python:3.7.11-alpine3.13 VOLUME /tmp #ADD xxxSNAPSHOT.jar /opt/app.jar/ WORKDIR /opt COPY docker-entrypoint.sh .
#add code
COPY project_path/ /opt/app/ #EXPOSE 7097 ENTRYPOINT ["sh", "docker-entrypoint.sh"]
启动脚本:
docker-entrypoint.sh
#!/bin/sh #install dependence pip3 install --default-timeout=100 --no-cache-dir --upgrade pip setuptools pymysql pymongo redis scrapy-redis ipython Scrapy requests retrying kafka echo " try to start the service !" cd /opt/app/project_path/ python3 main.py
条件参考:
if [[ $FE_ROLE = 'fe-leader' ]]; then /home/doris/fe/bin/start_fe.sh elif [[ $FE_ROLE = 'be' ]]; then /home/doris/be/bin/start_be.sh elif [[ $FE_ROLE = 'fe-follower' ]]; then /home/doris/fe/bin/start_fe.sh --helper $FE_LEADER else /home/doris/fs_broker/bin/start_broker.sh fi
创建镜像:
docker build -t scrapy_redis_pj:v1 .
启动:
sudo docker run -itd --restart unless-stopped --name scrapy_redis -v /opt/scrapy:/opt/app/ -v /etc/localtime:/etc/localtime:ro scrapy_redis_pj
KO!
>>>>>>>>>>>>>>
原文:https://www.cnblogs.com/zhujingzhi/p/9766965.html
1> 编写dockerfile文件
# 指定创建的基础镜像 FROM alpine # 作者描述信息 MAINTAINER alpine_python3_scrapy (lshan523@163.com) # 替换阿里云的源 RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && \ echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories # 更新源、安装openssh 并修改配置文件和生成key 并且同步时间 RUN apk update && \ apk add --no-cache openssh-server tzdata && \ sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \ ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \ ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \ ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \ echo "root:h056zHJLg85oW5xh7VtSa" | chpasswd # 安装Scrapy依赖包(必须安装的依赖包) RUN apk add --no-cache python3 python3-dev gcc openssl-dev openssl libressl libc-dev linux-headers libffi-dev libxml2-dev libxml2 libxslt-dev openssh-client openssh-sftp-server # 安装环境需要pip包(这里的包可以按照需求添加或者删除) RUN pip3 install --default-timeout=100 --no-cache-dir --upgrade pip setuptools pymysql pymongo redis scrapy-redis ipython Scrapy requests # 启动ssh脚本 RUN echo "/usr/sbin/sshd -D" >> /etc/start.sh && \ chmod +x /etc/start.sh # 开放22端口 EXPOSE 22 # 执行ssh启动命令 CMD ["/bin/sh","/etc/start.sh"]
实现了容器可以SSH远程访问 基于Python3 环境安装的Scrapy,通过start.sh脚本启动SSH服务
如果直接运行可定的项目->修改: 添加:dockerfile, 去掉CMD
#自己的代码
COPY scrapy_project/ /usr/local/app/
COPY docker-entrypoint.sh .
ENTRYPOINT ["/bin/sh", "docker-entrypoint.sh"]
启动脚本:
docker-entrypoint.sh
#!/bin/sh cd /usr/local/app/project_path/ echo " try to start the service !" python3 main.py
创建镜像:
> docker build -t scrapy_redis_ssh:v1 .
查看镜像:
[root@DockerBrian scrapy]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE scrapy_redis_ssh v1 b2c95ef95fb9 4 hours ago 282 MB docker.io/alpine latest 196d12cf6ab1 4 weeks ago 4.41 MB
创建容器:
docker run -itd --restart=always --name scrapy10086 -p 10086:22 scrapy_redis_ssh:v1