如果Docker的Log中不能显示Python print的内容,解决方法:
在Dockerfile 中添加一行:
ENV PYTHONUNBUFFERED=0
添加以后就可以在Log中看到Python print出来的log了。
Docker镜像Standalone-chrome找不到Chrome的问题,解决办法:
如果是普通Docker容器,可以使用
-v /dev/shm:/dev/shm
如果是Docker Swarm,需要:
--mount-add type=tmpfs,dst=/dev/shm,tmpfs-size=2147483648
由于docker中为root用户,因此在Selenium中启动Chrome的时候,需要加–no-sandbox参数,否则会报错。
chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') driver=webdriver.Chrome('./chromedriver', chrome_options=chrome_options)
在MySQL中查询重复行:
select host_id, count(host_id) from host_info group by host_id, platform having count(host_id) > 1
在MySQL中移除重复行:
delete t1 from host_info t1 inner join host_info t2 where t1.id<t2.id and t1.host_id = t2.host_id and t1.platform = t2.platform
使用Python的logging模块时,不仅要给StreamHandler设定Level,还需要给Logger设level,只有这样才能正常输出内容到控制台。
在创建Docker Service的时候,需要指定参数--network=host
这样才能使用主机的网络。如果不使用这个参数,那么就无法访问有防火墙限制的局域网中的其他服务器。