From 2de37a4ddb270ee32704bd4cf40431157c0971c1 Mon Sep 17 00:00:00 2001 From: Ben Overmyer Date: Fri, 16 Nov 2018 14:53:42 -0600 Subject: [PATCH] Improved the Docker dev workflow slightly. --- README.md | 49 +++++++++++++++++++++------------------------- config.ini.example | 26 ++++++++++++++++++++++++ docker-compose.yml | 2 ++ docker-setup.sh | 4 ++++ 4 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 config.ini.example create mode 100755 docker-setup.sh diff --git a/README.md b/README.md index 693e196..b5cf0db 100644 --- a/README.md +++ b/README.md @@ -90,43 +90,38 @@ make ui # Generates CSS (run this whenever you update your styles) make run # Runs the application ``` -### Using Docker +## Docker -From the cloned git repository, you can quickly stand up a Write Freely instance with Docker and Docker Compose. +### Using Docker for Development -First, you'll need to change the password for MariaDB's root user in `docker-compose.yml` from `changeme` to something that is unique to your setup: +If you'd like to use Docker as a base for working on a site's styles and such, +you can run the following from a Bash shell. -``` -environment: - - MYSQL_ROOT_PASSWORD=changeme -``` +*Note: This process is intended only for working on site styling. If you'd +like to run Write Freely in production as a Docker service, it'll require a +little more work.* -After that, you can spin up the containers and configure them: +The `docker-setup.sh` script will present you with a few questions to set up +your dev instance. You can hit enter for most of them, except for "Admin username" +and "Admin password." You'll probably have to wait a few seconds after running +`docker-compose up -d` for the Docker services to come up before running the +bash script. -```bash -# 1) Spin up the DB and Write Freely +``` docker-compose up -d +./docker-setup.sh +``` -# 2) Connect to MariaDB container -docker-compose exec db /bin/sh - -# 3) Log in to MariaDB, using the password you specified in docker-compose.yml -mysql -u root -p - -# 4) Create the database for Write Freely -CREATE DATABASE writefreely; -exit +Now you should be able to navigate to http://localhost:8080 and start working! -# 5) Migrate the database -mysql -u root -p writefreely < /tmp/schema.sql -exit +When you're completely done working, you can run `docker-compose down` to destroy +your virtual environment, including your database data. Otherwise, `docker-compose stop` +will shut down your environment without destroying your data. -# 6) Generate the configuration and clean up -docker-compose run web writefreely --config -docker stop writefreely_web_run_1 && docker rm writefreely_web_run_1 -``` +### Using Docker for Production -Now you should be able to navigate to http://localhost:8080 and start blogging! +Write Freely doesn't yet provide an official Docker pathway to production. We're +working on it, though! ## License diff --git a/config.ini.example b/config.ini.example new file mode 100644 index 0000000..10661bc --- /dev/null +++ b/config.ini.example @@ -0,0 +1,26 @@ +[server] +hidden_host = +port = 8080 + +[database] +type = mysql +username = root +password = changeme +database = writefreely +host = db +port = 3306 + +[app] +site_name = Write Freely Example Blog! +host = http://localhost:8080 +theme = write +disable_js = false +webfonts = true +single_user = true +open_registration = false +min_username_len = 3 +max_blogs = 1 +federation = true +public_stats = true +private = false + diff --git a/docker-compose.yml b/docker-compose.yml index 8284636..29a841e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,7 @@ services: build: . volumes: - "web-data:/go/src/app" + - "./config.ini.example:/go/src/app/config.ini" ports: - "8080:8080" networks: @@ -19,6 +20,7 @@ services: networks: - writefreely environment: + - MYSQL_DATABASE=writefreely - MYSQL_ROOT_PASSWORD=changeme restart: unless-stopped diff --git a/docker-setup.sh b/docker-setup.sh new file mode 100755 index 0000000..46f41f3 --- /dev/null +++ b/docker-setup.sh @@ -0,0 +1,4 @@ +#!/bin/bash +docker-compose exec db sh -c 'exec mysql -u root -pchangeme writefreely < /tmp/schema.sql' +docker exec writefreely_web_1 writefreely --gen-keys +docker exec -it writefreely_web_1 writefreely --config \ No newline at end of file