A large number of shipments are moved everyday domestically and internationally. A considerable number of items such as food, commodities, and pharmaceutical drugs are prone to damage in transit. This can be caused due to various reasons such as improper storage conditions and exposure to air or sunlight. The Internet of Things (IoT) has been used to enhance fundamental shipment tracking by improving transparency and visibility to such transport systems. This paper introduces a blockchain-powered smart container system (CryptoCargo) that monitors the conditions of the shipment and detects any violations that may damage its contents. These violations are recorded on the blockchain via smart contracts, which provides a secure and immutable storage thereby improving its trustworthiness in an inherently trustless environment comprising of multiple stakeholders. We present the design and implementation of CryptoCargo including architectural concerns and implementation details using a test Ethereum blockchain platform and cloud services. Moreover, we present details of thorough evaluation of the system to validate its function as well as to assess its effectiveness with respect to performance efficiency and real-time operation. We have made our smart contract code publicly available on Github.