Improve docker update instructions (#1619)
This commit is contained in:
		
							parent
							
								
									c4baa9fb6b
								
							
						
					
					
						commit
						e17b5b228d
					
				
					 1 changed files with 18 additions and 25 deletions
				
			
		
							
								
								
									
										43
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										43
									
								
								README.md
									
										
									
									
									
								
							| 
						 | 
					@ -69,28 +69,27 @@ Consult the example configuration file, `.env.production.sample` for the full li
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The project now includes a `Dockerfile` and a `docker-compose.yml` file (which requires at least docker-compose version `1.10.0`).
 | 
					The project now includes a `Dockerfile` and a `docker-compose.yml` file (which requires at least docker-compose version `1.10.0`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Review the settings in docker-compose.yml.  Note that it is not default to store the postgresql database and redis databases in a persistent storage location,
 | 
					Review the settings in `docker-compose.yml`. Note that it is not default to store the postgresql database and redis databases in a persistent storage location,
 | 
				
			||||||
so you may need or want to adjust the settings there.
 | 
					so you may need or want to adjust the settings there.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Before running the first time, you need to build the images:
 | 
					Before running the first time, you need to build the images:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    docker-compose build
 | 
					    docker-compose build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then, you need to fill in the .env.production file:
 | 
					Then, you need to fill in the `.env.production` file:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp .env.production.sample .env.production
 | 
					    cp .env.production.sample .env.production
 | 
				
			||||||
    vi .env.production
 | 
					    nano .env.production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Do NOT change the REDIS_* or DB_* settings when running with the default docker configurations.
 | 
					Do NOT change the `REDIS_*` or `DB_*` settings when running with the default docker configurations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You will need to fill in, at least:
 | 
					You will need to fill in, at least: `LOCAL_DOMAIN`, `LOCAL_HTTPS`, `PAPERCLIP_SECRET`, `SECRET_KEY_BASE`, `OTP_SECRET`, and the `SMTP_*` settings.  To generate the `PAPERCLIP_SECRET`, `SECRET_KEY_BASE`, and `OTP_SECRET`, you may use:
 | 
				
			||||||
    LOCAL_DOMAIN, LOCAL_HTTPS, PAPERCLIP_SECRET, SECRET_KEY_BASE, OTP_SECRET, and the SMTP_*
 | 
					 | 
				
			||||||
    settings.  To generate the PAPERCLIP_SECRET, SECRET_KEY_BASE, and OTP_SECRET, you may use:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    docker-compose run --rm web rake secret
 | 
					    docker-compose run --rm web rake secret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Do this once for each of those keys, and copy the result into the .env.production file in
 | 
					Do this once for each of those keys, and copy the result into the `.env.production` file in the appropriate field.
 | 
				
			||||||
    the appropriate field.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then you should run the db:migrate command to create the database, or migrate it from an older release:
 | 
					Then you should run the `db:migrate` command to create the database, or migrate it from an older release:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    docker-compose run --rm web rails db:migrate
 | 
					    docker-compose run --rm web rails db:migrate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,7 +97,7 @@ Then, you will also need to precompile the assets:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    docker-compose run --rm web rails assets:precompile
 | 
					    docker-compose run --rm web rails assets:precompile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 before you can launch the docker image with:
 | 
					before you can launch the docker image with:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    docker-compose up
 | 
					    docker-compose up
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,10 +105,10 @@ If you wish to run this as a daemon process instead of monitoring it on console,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    docker-compose up -d
 | 
					    docker-compose up -d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then you may login to your new Mastodon instance by browsing to http(s)://(yourhost):3000/
 | 
					Then you may login to your new Mastodon instance by browsing to http://localhost:3000/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Following that, make sure that you read the [production guide](docs/Running-Mastodon/Production-guide.md). You are probably going to want to understand how
 | 
					Following that, make sure that you read the [production guide](docs/Running-Mastodon/Production-guide.md). You are probably going to want to understand how
 | 
				
			||||||
to configure NGINX to make your Mastodon instance available to the rest of the world.
 | 
					to configure Nginx to make your Mastodon instance available to the rest of the world.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The container has two volumes, for the assets and for user uploads, and optionally two more, for the postgresql and redis databases.
 | 
					The container has two volumes, for the assets and for user uploads, and optionally two more, for the postgresql and redis databases.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -133,17 +132,11 @@ Running any of these tasks via docker-compose would look like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This approach makes updating to the latest version a real breeze.
 | 
					This approach makes updating to the latest version a real breeze.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    git pull
 | 
					1. `git pull` to download updates from the repository
 | 
				
			||||||
 | 
					2. `docker-compose build` to compile the Docker image out of the changed source files
 | 
				
			||||||
To pull down the updates, re-run
 | 
					3. (optional) `docker-compose run --rm web rails db:migrate` to perform database migrations. Does nothing if your database is up to date
 | 
				
			||||||
 | 
					4. (optional) `docker-compose run --rm web rails assets:precompile` to compile new JS and CSS assets
 | 
				
			||||||
    docker-compose build
 | 
					5. `docker-compose up -d` to re-create (restart) containers and pick up the changes
 | 
				
			||||||
 | 
					 | 
				
			||||||
And finally,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    docker-compose up -d
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Which will re-create the updated containers, leaving databases and data as is. Depending on what files have been updated, you might need to re-run migrations and asset compilation.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Deployment without Docker
 | 
					## Deployment without Docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -159,7 +152,7 @@ Docker is great for quickly trying out software, but it has its drawbacks too. I
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[](https://heroku.com/deploy)
 | 
					[](https://heroku.com/deploy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Mastodon can theoretically run indefinitely on a free [Heroku](https://heroku.com) app. [You can view a guide for deployment on Heroku here.](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Heroku-guide.md)
 | 
					Mastodon can run on [Heroku](https://heroku.com), but it gets expensive and impractical due to how Heroku prices resource usage. [You can view a guide for deployment on Heroku here](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Heroku-guide.md), but you have been warned.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Development with Vagrant
 | 
					## Development with Vagrant
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue