Installation from Docker
Docker 17.06.2+ and Docker Compose 1.14.0+ are required to perform installation via Docker. This is the recommended way to deploy the application when used in production.
Available as coralproject/talk on Docker Hub. (latest/Dockerfile)
Images are tagged using the following notation:
x
(wherex
is the major version number): any minor or patch updates will be included in this. If you’re ok getting new features occasionally and all the bug fixes, this is the tag for you. Any changes to this image tag will not require a database migration.x.y
(wherey
is the minor version number): any patch updates will be included with this tag. If you like getting fixes and having features change only when you want, this is the tag for you. (recommended)x.y.z
(wherez
is the patch version): this tag never gets updated, and essentially freezes your version, this should only be used when you are either extending Talk or are sure of a specific version you want to freeze.
We provide tags with *-onbuild
(onbuild/Dockerfile)
that can be used for easy plugin integration and acts as a customization
endpoint. To use this image tag, refer to the
onbuild section.
Installing
To use Talk without major customization you can run the application using our
provided docker image. The following is a docker-compose.yml
file that can
be used to setup Talk:
# For details on the syntax of docker-compose.yml files, check out:
# https://docs.docker.com/compose/compose-file/compose-file-v2/
version: '2'
services:
talk:
image: coralproject/talk:4
restart: always
ports:
- "3000:3000"
depends_on:
- mongo
- redis
environment:
- NODE_ENV=development # remove this line in production
- TALK_MONGO_URL=mongodb://mongo/talk
- TALK_REDIS_URL=redis://redis
- TALK_ROOT_URL=http://127.0.0.1:3000
- TALK_PORT=3000
- TALK_JWT_SECRET=password
mongo:
image: mongo:latest
restart: always
volumes:
- mongo:/data/db
redis:
image: redis:latest
restart: always
volumes:
- redis:/data
volumes:
mongo:
external: false
redis:
external: false
This is the bare minimum needed to start Talk, for more configuration variables, check out the Configuration section.
And you can then start it with:
docker-compose up -d
This process will take a minute or two, it has to download docker images for the required databases and Talk as well as setup the environments.
Now that you’ve started the services started using compose, you should see output that resembles the following:
Creating mongo_1 ...
Creating redis_1 ...
Creating mongo_1 ... done
Creating redis_1 ... done
Creating talk_1 ...
Creating talk_1 ... done
And when you run docker-compose ps
, you should see something like:
Name Command State Ports
-------------------------------------------------------------------------------
mongo_1 docker-entrypoint.sh mongod Up 27017/tcp
redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
talk_1 yarn start Up 0.0.0.0:3000->3000/tcp
At this stage, you should refer to the configuration for configuration variables that are specific to your installation.
Onbuild
We provide *-onbuild
images to assist and automate the customization of our
base installation with additional custom plugins. Images can be created with the
most basic of Dockerfile
‘s:
FROM coralproject/talk:4-onbuild
And running the following to build the docker image:
docker build -t my-awesome-talk-image --build-arg TALK_DEFAULT_LANG=es .
Don’t forget to replace my-awesome-talk-image
with your own image name, and
specify your build variables with the --build-arg
. Refer to Dockerfile.onbuild for the
available build variables.
This accomplishes a lot:
- Copies all the files alongside the
Dockerfile
into the application directory in the Docker image. - Installs any new dependencies that were required by any new plugins.
- Builds the new static bundles so that they are ready to serve when the image is running.
- Specifies a build time variable TALK_DEFAULT_LANG. Refer to Dockerfile.onbuild for the available build variables.
This means that you can create a repository for your organization that simply
includes the above Dockerfile
, a directory of plugins
, and a plugins.json
file which specifies the activated plugins, and you can deploy Talk easily to
your containerized infrastructure. The versioning of our Docker tags as well
lets you do something like:
FROM coralproject/talk:4-onbuild
Which would pin your image to `4.x.x release’s.