Simple container, only ncbi-datasets-cli=18.36.0 installed (conda-forge channel), image build details here Container build report
I am encountering a tls certificate issue:
Error: Post "https://api.ncbi.nlm.nih.gov/datasets/v2/taxonomy/taxon_suggest": POST https://api.ncbi.nlm.nih.gov/datasets/v2/taxonomy/taxon_suggest giving up after 11 attempt(s): Post "https://api.ncbi.nlm.nih.gov/datasets/v2/taxonomy/taxon_suggest": tls: failed to verify certificate: x509: certificate signed by unknown authority
Second container
I added the ca-certificates=2026.7.22 package, image build details here Container build report
Same results, tls certificate error.
Third-party container
Using the image available from DockerHub and maintained by the (US) State Public Health Bioinformatics Group staphb/ncbi-datasets - Docker Image
Works fine, no tls error.
Other tests
Varying ncbi-datasets-cli version in the environment.yml did not change the result
Local conda installation works fine (but I assume this is highly depend on the underlying OS/configuration)
Question
Is there a way to fix this using Seqera’s container service?
ncbi-datasets are Go static binaries, and look for certificates from a hard-coded path list. conda install ca-certificates writes $CONDA_PREFIX/ssl/cacert.pem, which is on none of Go’s search paths. However, Go uses env overrides SSL_CERT_FILE and SSL_CERT_DIR.
Solution
After exploring Seqera’s container build details and images, ssl certificates installed through ca-certificates are available within the image at /opt/conda/ssl/
Solution used:
create a container with the additional ca-certificates package
tell Nextflow to pass environment variables to the Docker containers, in nextflow.config:
In my case, no need for the env.whiteList parameter which can be removed.
Suggestions
Change the env.whiteList documentation to
Comma separated list of host environment variable names to be exported to the container environment. Host environment variables are not automatically accessible in a containerised task.
(also, while talking about documentation, I could not find any detail of what exactly the docker.fixOwnership parameter does)