Apache Guacamole

ワークディレクトリ作成

$ mkdir -p guacamole 
$ cd guacamole

docker-compose.xml作成

$ cat << EOF >> docker-compose.yml
guacd: 
  image: guacamole/guacd
  container_name: guacamole-guacd

mysql:
  image: mysql:5.7
  container_name: guacamole-mysql
  environment:
    - MYSQL_ROOT_PASSWORD=mysqlpass
  volumes:
    - "./mysql/data:/var/lib/mysql"
    - "./mysql/init:/docker-entrypoint-initdb.d"

guacamole:
  image: guacamole/guacamole
  container_name: guacamole
  links:
    - guacd:guacd
    - mysql:mysql
  ports:     
    - "8080:8080"
  environment:
    - MYSQL_DATABASE=guacamole_db
    - MYSQL_USER=guacamole_user
    - MYSQL_PASSWORD=guacapass

nginx:
  image: nginx
  container_name: guacamole-nginx
  ports:    
    - "80:80"
  volumes:
    - "./nginx:/etc/nginx"
  links:
    - guacamole
EOF

SQL初期化用のスクリプトを作成

$ mkdir -p ./mysql/init
$ cat << EOF >> ./mysql/init/1_createdb.sql
CREATE DATABASE guacamole_db;
CREATE USER guacamole_user IDENTIFIED BY 'guacapass';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO guacamole_user;
FLUSH PRIVILEGES;
EOF
$ docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > ./mysql/init/2_initguacamoledb.sql
$ sed -i '1s/^/use guacamole_db;\n/' ./mysql/init/2_initguacamoledb.sql

NGINX用の事前設定

$ docker run -it -d --name tmp-nginx nginx 
$ docker cp tmp-nginx:/etc/nginx nginx 
$ docker rm -f tmp-nginx
$ vi ./nginx/conf.d/guacamole.conf 
-- 
server {
   location /guacamole/ {
      proxy_pass http://guacamole:8080/guacamole/
      xxx
      xxx
   }
}
--
$ docker-compose up -d
$ docker-compose ps