[ 
https://issues.apache.org/jira/browse/GUACAMOLE-374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17840180#comment-17840180
 ] 

Mike Jumper commented on GUACAMOLE-374:
---------------------------------------

Automatic initialization of the database can be accomplished by mounting the 
init scripts within the directory used by the relevant database container. For 
example, a {{docker-compose.yml}} that uses PostgreSQL and initializes 
everything automatically (reading the database admin password from 
{{DB_PASSWORD}} environment variable supplied to {{docker compose}}) would be:

{code:none}
version: "3"
services:

    guacamole:
        image: guacamole/guacamole
        restart: unless-stopped
        depends_on:
            - guacd
            - db
        environment:
            GUACD_HOSTNAME: "guacd"
            POSTGRESQL_HOSTNAME: "db"
            POSTGRESQL_DATABASE: "guacamole_db"
            POSTGRESQL_USERNAME: "guacamole_user"
            POSTGRESQL_PASSWORD_FILE: "/run/secrets/database_password"
        volumes:
            - "initdb:/opt/guacamole/postgresql/schema:ro"
        secrets:
            - database_password

    db:
        image: postgres
        restart: unless-stopped
        environment:
            POSTGRES_DB: "guacamole_db"
            POSTGRES_USER: "guacamole_user"
            POSTGRES_PASSWORD_FILE: "/run/secrets/database_password"
        volumes:
            - "initdb:/docker-entrypoint-initdb.d:ro"
        secrets:
            - database_password

    guacd:
        image: guacamole/guacd
        restart: unless-stopped

volumes:
    initdb:

secrets:
    database_password:
        environment: DB_PASSWORD
{code}

The magic here is the way an {{initdb}} volume has been declared and shared 
between both {{guacamole}} and {{db}} containers.

> Installing Guacamole with Docker improvements
> ---------------------------------------------
>
>                 Key: GUACAMOLE-374
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-374
>             Project: Guacamole
>          Issue Type: Improvement
>          Components: guacamole-docker
>         Environment: sven@fangorn:~$ docker version
> Client:
>  Version:      17.06.1-ce
>  API version:  1.30
>  Go version:   go1.8.3
>  Git commit:   874a737
>  Built:        Thu Aug 17 22:51:12 2017
>  OS/Arch:      linux/amd64
> Server:
>  Version:      17.06.1-ce
>  API version:  1.30 (minimum version 1.12)
>  Go version:   go1.8.3
>  Git commit:   874a737
>  Built:        Thu Aug 17 22:50:04 2017
>  OS/Arch:      linux/amd64
>  Experimental: false
>            Reporter: Sven Gottwald
>            Assignee: Mike Jumper
>            Priority: Minor
>
> I installed guacamole as docker container for the first time. Great software! 
> I followed the guide on 
> [https://guacamole.incubator.apache.org/doc/gug/guacamole-docker.html]. There 
> is a lot of unnecessary work to get the container up and running, here are 
> some suggestions to improve the documentation:
> # The link flag is a deprecated legacy feature of Docker. It may eventually 
> be removed. [Legacy container links 
> |https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/].
>  It is no problem to get guacamole running with a user defined network.
> # The database should be generated automatically on first run. The user and 
> database could be automatically created by 
> [mariadb|https://hub.docker.com/_/mariadb/].
> # ...You should add mariadb as possible backend.
> # Due to its complexity (three services) you should provide a 
> {{docker-compose.yml}} file for use with 
> [docker-compose|https://docs.docker.com/compose/]. This also creates an user 
> defined network.
> Here is an example {{docker-compose.yml}} for use with mariadb:
> {noformat}
> version: '3'
> services:
>   guacd:
>     image: guacamole/guacd
>     depends_on:
>       - db
>   guac:
>     image: guacamole/guacamole
>     ports:
>       - 8080:8080
>     depends_on:
>       - db
>       - guacd
>     environment:
>       - GUACD_HOSTNAME=guacd
>       - MYSQL_PASSWORD=x
>       - MYSQL_DATABASE=guacamole_db
>       - MYSQL_USER=guacamole_user
>       - MYSQL_HOSTNAME=db
>   db:
>     image: mariadb
>     volumes:
>       - /srv/docker/guacamole-mysql:/var/lib/mysql
>     environment:
>       - MYSQL_ROOT_PASSWORD=x
>       - MYSQL_PASSWORD=x
>       - MYSQL_DATABASE=guacamole_db
>       - MYSQL_USER=guacamole_user
> {noformat}
> I don't know why, but {{GUACD_HOSTNAME}} and {{MYSQL_HOSTNAME}} are needed 
> (maybe a bug?)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to