[
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)