I am using a spec file beneath to deploy my app. There are a few environment variables such as database password and s3 access keys. I have no problem with the database credentials
as they can be set dynamically in the same file from the db service. However, I cannot find a good way to set the s3 credentials. I cannot simply put the access key and secret access key in the file as I need to commit it to our git repo. So at this stage I have to deploy using this file once and go to the project page and manually set the s3 credentials myself.
Is there a more convenient way? Can I set the environment variable with doctl apps create --spec spec.yaml
command? Thanks
#! spec.yaml
name: my_app
region: sgp1
services:
- name: backend
dockerfile_path: Dockerfile
source_dir: .
health_check:
http_path: /health_check
http_port: 3003
instance_count: 1
instance_size_slug: basic-xxs
routes:
- path: /
github:
branch: master
deploy_on_push: true
repo: my_repo
envs:
- key: APP_DATABASE__USERNAME
scope: RUN_TIME
value: ${db.USERNAME}
- key: APP_DATABASE__PASSWORD
scope: RUN_TIME
value: ${db.PASSWORD}
- key: APP_DATABASE__HOST
scope: RUN_TIME
value: ${db.HOSTNAME}
- key: APP_DATABASE__PORT
scope: RUN_TIME
value: ${db.PORT}
- key: APP_DATABASE__DATABASE_NAME
scope: RUN_TIME
value: ${db.DATABASE}
- key: APP_S3__ENDPOINT
scope: RUN_TIME
value: "???"
- key: APP_S3__ACCESS_KEY_ID
scope: RUN_TIME
value: "???"
- key: APP_S3__SECRET_ACCESS_KEY
scope: RUN_TIME
value: "???"
databases:
- engine: PG
name: db
version: "16"
production: true
cluster_name: main-postgresql
db_name: defaultdb
db_user: doadmin
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
Hey!
I think the only way right now is to manually set the S3 credentials in the App Platform dashboard after the first deploy, just like you’re doing.
From what I’ve seen,
doctl apps create --spec
doesn’t support injecting sensitive env vars dynamically unless they’re coming from a linked service like a database.That said, you could reach out to DigitalOcean support to double-check if there’s a better option or something newer that might help: https://do.co/support.
Would definitely be nice if
doctl
allowed passing secrets securely without putting them in the spec file.- Bobby