Инструменты пользователя

Инструменты сайта


docker:gotovye_reshenija:python

python

Запуск скрипта из файла

Dockerfile:

FROM python:3-alpine
WORKDIR /usr/src/app

Собираем образ

 docker build -t project .

Исполняем скрипт

docker run -it --rm --name python -v ${PWD}:/usr/src/app project python test.py

скрипт python test.py

print('hello')

Запуск скрипта из docker-compose

docker-compose.yaml

version: '3.1'
services:
  python:
    build: .
    volumes:
      - D:\docker\python\pars\lesson8:/usr/src/app
    container_name: python
    depends_on:
      - db
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: 2619192
    ports:
      - 5432:5432

  adminer:
    image: adminer
    ports:
      - 8080:8080
  pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "anchikin@mail.ru"
      PGADMIN_DEFAULT_PASSWORD: "2619192"
    ports:
      - "3003:80"
    depends_on:
      - db

Dockerfile

FROM python:3
 
WORKDIR /usr/src/app
 
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install peewee
RUN pip install postgres
COPY . .
 
CMD [ "python", "./app.py" ]
 
WORKDIR /usr/src/app

скрипт python

import csv
from peewee import *
#from peewee import PostgresqlDatabase
 
db = PostgresqlDatabase(database='test', user='postgres', password='2619192', host='db')
 
 
class Coin(Model):
    name = CharField()
    url = TextField()
    price = CharField()
 
    class Meta:
        database = db
 
 
 
def main():
 
    db.connect()
    db.create_tables([Coin])
 
    with open('cmc.csv') as f:
        order = ['name', 'url', 'price']
        reader = csv.DictReader(f, fieldnames=order)
 
        coins = list(reader)
 
        # for row in coins:
            # coin = Coin(name=row['name'], url=row['url'], price=row['price'])
            # coin.save()
 
        with db.atomic():
            # for row in coins:
            #     Coin.create(**row)
            for index in range(0, len(coins), 100):
                Coin.insert_many(coins[index:index+100]).execute()
 
 
if __name__ == '__main__':
    main()

file для парсинга

Bitcoin,https://coinmarketcap.com/currencies/bitcoin/,"$6,061.07"
Ethereum,https://coinmarketcap.com/currencies/ethereum/,$128.59
XRP,https://coinmarketcap.com/currencies/xrp/,$0.154285
Tether,https://coinmarketcap.com/currencies/tether/,$1.00
docker/gotovye_reshenija/python.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)