I tested this method for three full days and it worked like a charm. It stays perfectly fresh and delicious. Though I will admit by the third day it does start to get a little more watery. But who has guacamole last that long anyway?
Lisa is a bestselling cookbook author, recipe developer, and YouTuber (with over 2.5 million subscribers) living in sunny Southern California. She started Downshiftology in 2014, and is passionate about making healthy food with fresh, simple and seasonal ingredients.
I discovered another great way to prevent guac from going brown. Put it in a bowl, smooth it down, and then cover it completely with a layer of sour cream. When you want to eat it the next day, just mix it all together. It also works for a third day :)
Delicious recipe, however I found that the lime juice and cilantro was a bit overpowering since I love the pure flavour of avocado. So I would dial those back to about half next time.
Thanks for the recipe Lisa!
I've hit a bit of a snag and could really use some help. I've got a bunch of photos in HEIC format, and I'm struggling to view heic files on Windows 10 (and potentially Windows 11) setup. It seems like my current setup just isn't cutting it for these types of files. I'm wondering if anyone has recommendations for a best HEIC viewer that's compatible with Windows 10 or 11? I'm looking for something straightforward and user-friendly since I'm not exactly a tech wizard. Any advice or suggestions would be super appreciated. Thanks in advance!
After a bit of research and trying out a few different applications, I found a couple of solutions that worked well for me. First, I discovered that Microsoft actually offers a HEIC file extension support in the Microsoft Store, which, once installed, it seems doesn't allow me to view HEIC files directly in the Windows Photos app, I don't why.
I also tried out a third-party app called TunesBro HEIC converter. It not only let me view HEIC files seamlessly but also offered the option to convert them to JPG if needed. This was super handy for sharing photos with friends who couldn't view HEIC files or for uploading to websites that only accept JPG.
Google Photos is a popular photo sharing and storage service developed by Google. It allows users to upload, share, and manage their photos and videos from any device. It supports a wide range of photo and video formats, including the High Efficiency Image File Format (HEIC). HEIC is a format used by Apple's iOS devices for storing high-quality images in smaller file sizes compared to traditional formats like JPEG. However, HEIC is not as widely supported on non-Apple platforms, which can create challenges when sharing or viewing these files.
Once uploaded, Google Photos automatically converts HEIC files to a compatible format for easy viewing across all devices. Simply click or tap on an image to view it. You can also use Google Photos' editing tools to enhance your images.
Encouraged by that success, I also decided to give TunesBro HEIC Converter a shot, especially since I often need to convert photos for sharing with friends and family or for use on websites. The ability to easily convert HEIC files to JPG has been a game changer for me. It's incredibly user-friendly and the batch conversion feature has saved me so much time.
Multi-stage builds let you reduce the size of your final image, by creating acleaner separation between the building of your image and the final output.Split your Dockerfile instructions into distinct stages to make sure that theresulting output only contains the files that's needed to run the application.
If you have multiple images with a lot in common, consider creating a reusablestage that includes the shared components, and basing your unique stages onthat. Docker only needs to build the common stage once. This means that your derivative images use memoryon the Docker host more efficiently and load more quickly.
Docker Official Imagesare some of the most secure and dependable images on Docker Hub. Typically,Docker Official images have few or no packages containing CVEs, and arethoroughly reviewed by Docker and project maintainers.
When building your own image from a Dockerfile, ensure you choose a minimal baseimage that matches your requirements. A smaller base image not only offersportability and fast downloads, but also shrinks the size of your image andminimizes the number of vulnerabilities introduced through the dependencies.
You should also consider using two types of base image: one for building andunit testing, and another (typically slimmer) image for production. In thelater stages of development, your image may not require build tools such ascompilers, build systems, and debugging tools. A small image with minimaldependencies can considerably lower the attack surface.
Docker images are immutable. Building an image is taking a snapshot of thatimage at that moment. That includes any base images, libraries, or othersoftware you use in your build. To keep your images up-to-date and secure, makesure to rebuild your image often, with updated dependencies.
The following Dockerfile uses the 24.04 tag of the ubuntu image. Over time,that tag may resolve to a different underlying version of the ubuntu image,as the publisher rebuilds the image with new security patches and updatedlibraries. Using the --no-cache, you can avoid cache hits and ensure a freshdownload of base images and dependencies.
The image defined by your Dockerfile should generate containers that are asephemeral as possible. Ephemeral means that the container can be stoppedand destroyed, then rebuilt and replaced with an absolute minimum set up andconfiguration.
Each container should have only one concern. Decoupling applications intomultiple containers makes it easier to scale horizontally and reuse containers.For instance, a web application stack might consist of three separatecontainers, each with its own unique image, to manage the web application,database, and an in-memory cache in a decoupled manner.
Limiting each container to one process is a good rule of thumb, but it's not ahard and fast rule. For example, not only can containers bespawned with an init process,some programs might spawn additional processes of their own accord. Forinstance,Celery can spawn multiple workerprocesses, andApache can create one process perrequest.
Whenever possible, sort multi-line arguments alphanumerically to make maintenance easier.This helps to avoid duplication of packages and make thelist much easier to update. This also makes PRs a lot easier to read andreview. Adding a space before a backslash (\) helps as well.
When building an image, Docker steps through the instructions in yourDockerfile, executing each in the order specified. For each instruction, Dockerchecks whether it can reuse the instruction from the build cache.
Understanding how the build cache works, and how cache invalidation occurs,is critical for ensuring faster builds.For more information about the Docker build cache and how to optimize your builds,seeDocker build cache.
Image tags are mutable, meaning a publisher can update a tag to point to a newimage. This is useful because it lets publishers update tags to point tonewer versions of an image. And as an image consumer, it means youautomatically get the new version when you re-build your image.
At one point in time, the 3.19 tag might point to version 3.19.1 of theimage. If you rebuild the image 3 months later, the same tag might point to adifferent version, such as 3.19.4. This publishing workflow is best practice,and most publishers use this tagging strategy, but it isn't enforced.
The downside with this is that you're not guaranteed to get the same for everybuild. This could result in breaking changes, and it means you also don't havean audit trail of the exact image versions that you're using.
To fully secure your supply chain integrity, you can pin the image version to aspecific digest. By pinning your images to a digest, you're guaranteed toalways use the same image version, even if a publisher replaces the tag with anew image. For example, the following Dockerfile pins the Alpine image to thesame tag as earlier, 3.19, but this time with a digest reference as well.
While this helps you avoid unexpected changes, it's also more tedious to haveto look up and include the image digest for base image versions manually eachtime you want to update it. And you're opting out of automated security fixes,which is likely something you want to get.
Docker Scout has a built-inOutdated base imagespolicy that checks forwhether the base image version you're using is in fact the latest version. Thispolicy also checks if pinned digests in your Dockerfile correspond to thecorrect version. If a publisher updates an image that you've pinned, the policyevaluation returns a non-compliant status, indicating that you should updateyour image.
Docker Scout also supports an automated remediation workflow for keeping yourbase images up-to-date. When a new image digest is available, Docker Scout canautomatically raise a pull request on your repository to update yourDockerfiles to use the latest version. This is better than using a tag thatchanges the version automatically, because you're in control and you have anaudit trail of when and how the change occurred.
Whenever possible, use current official images as the basis for yourimages. Docker recommends theAlpine image as itis tightly controlled and small in size (currently under 6 MB), while stillbeing a full Linux distribution.
You can add labels to your image to help organize images by project, recordlicensing information, to aid in automation, or for other reasons. For eachlabel, add a line beginning with LABEL with one or more key-value pairs.The following examples show the different acceptable formats. Explanatory comments are included inline.
An image can have more than one label. Prior to Docker 1.10, it was recommendedto combine all labels into a single LABEL instruction, to prevent extra layersfrom being created. This is no longer necessary, but combining labels is stillsupported. For example:
d3342ee215