Ang pagsulay usa ka hinungdanon nga bahin sa proseso sa pag-uswag. Ug usahay ang mga developer kinahanglan nga magpadagan sa mga pagsulay sa lokal, sa wala pa maghimo mga pagbag-o.
Kung ang aplikasyon naggamit Amazon Web Services, python librarya moto perpekto alang niini.
Ang usa ka kompleto nga lista sa pagsakup sa kapanguhaan mahimong makita
Adunay usa ka turnip sa Github Hugo Picado -
Aw, sayon ββra kana nga ayohon.
Sukad sa pagsugod kinahanglan nimo ipiho ang klase sa serbisyo (env baryable MOTO_SERVICE), kinahanglan lang natong ihulagway ang pagmugna sa kahinguhaan.
Usbon ta gamay pagsugod.sh:
Hinuon
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
Isulod:
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
Ang katapusan nga file mao ang:
pagsugod.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
Nagtukod kami usa ka bag-ong imahe ug iduso kini sa among rehistro.
Sunod, magsulat kita usa ka script sa pagsugod sa kapanguhaan, pananglitan SWF domain, gamit ang librarya para sa pagtrabaho sa 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'
Ang lohika mao kini:
- Sa pagsugod, among gi-mount ang among script /opt/init/bootstrap.py.
- Kung ang file gi-mount, kini ipatuman.
- Kung walay file, ang hubo nga moto-server magsugod lang.
Ug, mahimo nimong bugalbugalan ang usa ka tibuuk nga kapanguhaan pinaagi sa paglansad sa usa ka sudlanan:
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
Atong sulayan kini nga interactive:
Nagtrabaho!
Aron makahimo kami docker-compose.yml, nga makatipig sa mga pagbag-o sa pagsulay sa oras:
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
Sa tinuud, kini nga pamaagi mahimong magamit dili lamang sa laptop sa usa ka developer. Ang pasiuna nga mga pagsulay nga adunay mga pagbiaybiay pagkahuman sa asembliya makatabang sa pagtangtang sa posible nga mga problema kung nagdagan sa mga dev* nga palibot.
Mga reperensiya:
Motocker repo -
Moto repo -
Boto3 Docs -
Source: www.habr.com