From: Michael Brown Date: Mon, 24 Mar 2014 06:40:41 +0000 (-0400) Subject: Enhanced user experience X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=e741295aafc70ef1f4477dfbdd7331964e01e493;p=discourse_docker.git Enhanced user experience * launcher: add test: docker daemon running? * launcher: bugfix: double-quotes were getting into SSH_PUB_KEY variable * samples: add comments to port specs, email, smtp settings, etc * samples: add run block with examples for root password, ssh key import --- diff --git a/launcher b/launcher index a1140d4..c536ea8 100755 --- a/launcher +++ b/launcher @@ -31,7 +31,15 @@ usage () { prereqs() { - # 1. running aufs + # 1. docker daemon running? + test=`docker info >/dev/null` + + if [[ $? -ne 0 ]] ; then + echo "Cannot connect to the docker daemon - verify it is running and you have access" + exit 1 + fi + + # 2. running aufs test=`docker info 2> /dev/null | grep 'Driver: aufs'` if [[ "$test" =~ "aufs" ]] ; then : ; else echo "Your Docker installation is not using aufs" @@ -42,7 +50,7 @@ prereqs() { exit 1 fi - # 2. running docker 0.9+ + # 3. running docker 0.9+ test=`docker --version | grep 0.9` if [[ "$test" =~ "0.9" ]] ; then : ; else @@ -50,7 +58,7 @@ prereqs() { exit 1 fi - # 3. able to attach stderr / out / tty + # 4. able to attach stderr / out / tty test=`docker run -i --rm -a stdin -a stdout -a stderr $image echo working` if [[ "$test" =~ "working" ]] ; then : ; else echo "Your Docker installation is not working correctly" @@ -263,7 +271,7 @@ case "$command" in echo $run_command - env=("${env[@]}" "-e" "SSH_PUB_KEY=\"$ssh_pub_key\"") + env=("${env[@]}" "-e" "SSH_PUB_KEY=$ssh_pub_key") (exec echo "$input" | docker run "${env[@]}" -e DOCKER_HOST_IP=$docker_ip --cidfile $cidbootstrap -i -a stdin -a stdout -a stderr $volumes $image \ /bin/bash -c "$run_command") \ diff --git a/samples/standalone.yml b/samples/standalone.yml index 2dae4e7..cee740f 100644 --- a/samples/standalone.yml +++ b/samples/standalone.yml @@ -5,31 +5,32 @@ templates: - "templates/redis.template.yml" - "templates/sshd.template.yml" - "templates/web.template.yml" + # which ports to expose? expose: - - "80:80" - - "2222:22" + - "80:80" # fwd host port 80 to container port 80 (http) + - "2222:22" # fwd host port 2222 to container port 22 (ssh) params: # git revision to run version: HEAD - env: - # your email here - DISCOURSE_DEVELOPER_EMAILS: 'my_email@email.com' + # comma-separated emails + DISCOURSE_DEVELOPER_EMAILS: 'my_email@example.com' # CHANGE ME to your hostname DISCOURSE_HOSTNAME: 'www.example.com' # SET ME to your smtp server eg mandrill # don't forget to set mail - # DISCOURSE_SMTP_ADDRESS: smtp.mandrillapp.com - # DISCOURSE_SMTP_PORT: 587 - # DISCOURSE_SMTP_USER_NAME: user@example.com - # DISCOURSE_SMTP_PASSWORD: p@ssword + DISCOURSE_SMTP_ADDRESS: smtp.example.com # (mandatory) + # DISCOURSE_SMTP_PORT: 587 # (optional) + # DISCOURSE_SMTP_USER_NAME: user@example.com # (optional) + # DISCOURSE_SMTP_PASSWORD: p@ssword # (optional) +# These containers are stateless, all the data is stored in /shared volumes: - volume: - host: /var/docker/shared + host: /var/docker/shared/standalone guest: /shared # you may use the docker manager to upgrade and monitor your docker image @@ -41,3 +42,20 @@ hooks: cmd: - mkdir -p plugins - git clone https://github.com/discourse/docker_manager.git + +# Remember, this is YAML syntax - you can only have one block with a name +run: + - exec: echo "Beginning of custom commands" + + ## If you want to configure password login for root, uncomment and change: + #- exec: apt-get -y install whois # for mkpasswd + ## Use only one of the following lines: + #- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root + #- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'RAW_PASSWORD')" root + + ## If you want to authorized additional users, uncomment and change: + #- exec: ssh-import-id username + #- exec: ssh-import-id anotherusername + + - exec: echo "End of custom commands" + - exec: awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Authorized SSH keys for this container:"; } NF>=2 {print $NF;}'