When you use both entrypoint and command, the command section will be appended to entrypoint executable as arguments. Thus in your case:
ENTRYPOINT ["/start.sh"]
CMD ["aptly", "api", "serve"]
Is equivalent to running:
ENTRYPOINT["/start.sh", "aptly", "api", "serve"]