Deploying Discourse on Docker is currently our recommended setup. It avoids many pitfalls installations have, such as misconfigured nginx, sub-optimal Ruby defaults and so on.
The Docker based setup ensures we are all on the same page when diagnosing installation issues and completely eradicates a class of support calls.
Today, all sites hosted by Discourse are on Docker.
This is a basic guide on how to move your current Discourse setup to a Docker based setup.
Getting started
First, get a blank site with working email installed. Follow the guide at https://github.com/discourse/discourse_docker and install a new, empty Discourse instance.
Tips:
-
Bind the web to a different port than port 80, if you are on the same box. Eg:
expose: - "81:80"
-
Be sure to enter your email in the developer email section, so you get admin:
env: # your email here DISCOURSE_DEVELOPER_EMAILS: '[email protected]'
-
Make sure email is setup and working by visiting
/admin/email
and sending a test email. -
Make sure you have can enter your container
./launcher enter my_container
must work.
If any of the above is skipped your migration will fail.
At the end of this process you will have a working website. Carry on.
Exporting and importing the old site
-
Ensure you are running the absolute latest version of Discourse. We had bugs in the export code in the past, make sure you are on latest before attempting an export.
- On your current instance
- go to
/admin/backups
and click on thebutton.
- once the backup is done, you will be able to
it.
- go to
- On your newly installed docker instance
- enable the
allow_restore
site setting - refresh your browser for the change to be taken into account
- go to
/admin/backups
andyour backup.
- once your upload is done, click on the
button
- enable the
-
Change port binding so its on 80
- Rebuild container
./launcher rebuild app
Yay. You are done.
Source: https://meta.discourse.org/t/migrating-an-old-discourse-install-to-docker/12439