جاچ ترقي جي عمل جو هڪ لازمي حصو آهي. ۽ ڪڏهن ڪڏهن ڊولپرز کي مقامي طور تي ٽيسٽ هلائڻ جي ضرورت آهي، تبديليون ڪرڻ کان پهريان.
جيڪڏهن ايپليڪيشن استعمال ڪري ٿي ايم ايس ايز ويب خدمتون, سٿان لائبريري moto هن لاء ڀرپور.
وسيلن جي ڪوريج جي مڪمل فهرست ڏسي سگھجي ٿو
Github تي هڪ turnip آهي هيوگو پيڪاڊو -
خير، ان کي ٺيڪ ڪرڻ لاء ڪافي آسان آهي.
شروع ڪرڻ کان وٺي توهان کي خدمت جي قسم جي وضاحت ڪرڻ جي ضرورت آهي (اين اي ڪشش MOTO_SERVICE)، اسان کي صرف وسيلن جي تخليق کي بيان ڪرڻو پوندو.
اچو ته ان کي ٿورو تبديل ڪريون start.sh:
بدران
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
داخل ڪريو:
if [ -f /opt/init/bootstrap.py ]; then
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT & (sleep 5 && echo "Executing bootstrap script." && python /opt/init/bootstrap.py)
else
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
fi
wait
آخري فائل آهي:
start.sh
#!/bin/sh
# validate required input
if [ -z "$MOTO_SERVICE" ]; then
echo "Please define AWS service to run with Moto Server (e.g. s3, ec2, etc)"
exit 1
fi
# setting defaults for optional input
if [ -z "$MOTO_HOST" ]; then
MOTO_HOST="0.0.0.0"
fi
if [ -z "$MOTO_PORT" ]; then
MOTO_PORT="5000"
fi
echo "Starting service $MOTO_SERVICE at $MOTO_HOST:$MOTO_PORT"
if [ -f /opt/init/bootstrap.py ]; then
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT & (sleep 5 && echo "Executing bootstrap script." && python /opt/init/bootstrap.py)
else
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
fi
# Prevent container from exiting when bootstrap.py finishing
wait
اسان هڪ نئين تصوير ٺاهي ۽ ان کي اسان جي رجسٽري ۾ ڌڪيو.
اڳيون، اچو ته هڪ وسيلا شروعاتي اسڪرپٽ لکون، مثال طور SWF ڊومين، AWS سان ڪم ڪرڻ لاءِ لائبريري استعمال ڪندي - boto3:
bootstrap_swf.py
import boto3
from botocore.exceptions import ClientError
import os
os.environ["AWS_ACCESS_KEY_ID"] = "fake"
os.environ["AWS_SECRET_ACCESS_KEY"] = "fake"
client = boto3.client('swf', region_name='us-west-2', endpoint_url='http://localhost:5000')
try:
client.register_domain(
name='test-swf-mock-domain',
description="Test SWF domain",
workflowExecutionRetentionPeriodInDays="10"
)
except ClientError as e:
print "Domain already exists: ", e.response.get("Error", {}).get("Code")
response = client.list_domains(
registrationStatus='REGISTERED',
maximumPageSize=123,
reverseOrder=True|False
)
print 'Ready'
منطق هي آهي:
- جڏهن شروع ڪريون ٿا، اسان اسان جي اسڪرپٽ کي نصب ڪيو /opt/init/bootstrap.py.
- جيڪڏهن فائل نصب ٿيل آهي، اهو عمل ڪيو ويندو.
- جيڪڏهن ڪا به فائل نه آهي، بيئر موٽر سرور صرف شروع ٿيندي.
۽، توهان هڪ ڪنٽينر کي لانچ ڪندي پوري وسيلن کي ٺٺولي ڪري سگهو ٿا:
docker run --name swf -d
-e MOTO_SERVICE=swf
-e MOTO_HOST=0.0.0.0
-e MOTO_PORT=5000
-p 5001:5000
-v /tmp/bootstrap_swf.py:/opt/init/bootstrap.py
-i awesome-repo.com/moto-server:latest
اچو ته ان کي باضابطه طور تي ڪوشش ڪريو:
Работает!
تنهن ڪري اسان docker-compose.yml ٺاهي سگهون ٿا، جيڪو وقت جي جانچ جي تبديلين کي بچائيندو:
docker-compose.yml
version: '3'
services:
s3:
image: picadoh/motocker
environment:
- MOTO_SERVICE=s3
- MOTO_HOST=10.0.1.2
ports:
- "5002:5000"
networks:
motonet:
ipv4_address: 10.0.1.2
volumes:
- /tmp/bootstrap_s3.py:/opt/init/bootstrap.py
swf:
image: picadoh/motocker
environment:
- MOTO_SERVICE=swf
- MOTO_HOST=10.0.1.3
ports:
- "5001:5000"
networks:
motonet:
ipv4_address: 10.0.1.3
volumes:
- /tmp/bootstrap_swf.py:/opt/init/bootstrap.py
ec2:
image: picadoh/motocker
environment:
- MOTO_SERVICE=ec2
- MOTO_HOST=10.0.1.4
ports:
- "5003:5000"
networks:
motonet:
ipv4_address: 10.0.1.4
volumes:
- /tmp/bootstrap_ec2.py:/opt/init/bootstrap.py
networks:
motonet:
driver: bridge
ipam:
config:
- subnet: 10.0.0.0/16
دراصل، هي طريقو استعمال ڪري سگهجي ٿو نه رڳو ڊولپر جي ليپ ٽاپ تي. اسيمبليءَ کان پوءِ ٺٺوليون سان ابتدائي ٽيسٽون ممڪن مسئلن کان نجات حاصل ڪرڻ ۾ مدد ڪنديون جڏهن dev * ماحول تي هلندي.
حوالا:
موٽرڪر ريپو -
موٽو ريپو -
Boto3 دستاويز -
جو ذريعو: www.habr.com