Hi, I have a simple python flask app that is creating and writing to a sqlite database (this creates a mydb.db file in the filesystem). I know if I would use “droplet” this would not be a problem but I was wondering if I could also use “app-platform”…I think I don’t because it will run in a docker container that will not persist filesystem changes right ? I tested it with a simple app and it worked (theres no error that I cant write to the filesystem or something like that) so now I’m wondering am I correct that I should not use sqlite with app-platform, and if so, in what situation would the containers restart/wipe the filesystem could it happen “any time” or only when performing some administrative work like changing the scaling plan ?
Also if I cant use sqlite can you point me to resources how to integrate digitaloceans hosted db
Thanks in advance, I’m new to web dev and digitalocean seams really nice.
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.
This was answered by @Jon Friesen in: https://www.digitalocean.com/community/questions/installing-using-sqlite-on-app-platform
You are correct that using SQLite with DigitalOcean App Platform may not be the best choice because the file system in the containers used by App Platform is not persistent. Containers in App Platform are designed to be ephemeral, meaning they can be restarted or scaled up/down at any time, and any changes made to the local file system within a container will be lost when the container is replaced or restarted.
SQLite relies on a local file to store its data, and if you use it within an App Platform container, you risk losing your data whenever the container is restarted or replaced. Therefore, for production applications, it’s generally recommended to use a more robust and scalable database system, such as PostgreSQL or MySQL, which can be easily integrated with DigitalOcean’s managed database services.
To integrate DigitalOcean’s hosted database service with your Flask app on App Platform, you can follow these general steps:
Create a Managed Database: In your DigitalOcean account, create a managed database instance. You can choose either PostgreSQL or MySQL based on your preference and requirements.
Database Connection: Retrieve the connection details for your managed database, including the host, port, username, and password.
Update Application Configuration: In your Flask application, update the database configuration to use the connection details from the managed database. You will typically need to modify the database URL or connection string in your Flask app’s configuration to point to the managed database.
For example, if you’re using SQLAlchemy in your Flask app, you can configure it like this:
pythonCopy code
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://username:password@host:port/database_name' db = SQLAlchemy(app)
Deploy to App Platform: Push the updated code to your App Platform repository, and configure the environment variables for your managed database connection details. These environment variables can typically be set in your App Platform app’s settings.
Deploy Your App: Deploy your Flask app to DigitalOcean App Platform. It will now use the managed database for storing and retrieving data.
Test: After deployment, test your application to ensure that it’s properly connected to the managed database and functioning as expected.
By following these steps, you can use a managed database with DigitalOcean App Platform, ensuring data persistence and scalability for your web application.