MXS-1803: Simplify docker image
The docker image now simply installs the latest MaxScale version instead of building it. This significantly reduces the amount of maintenance that the image requires. Updated the configurations to allow runtime definition of servers and updated README.md to reflect the changes in the files. Pointed links to 2.2 instead of develop. Removed text from the readme that was not strictly related to running the MaxScale image.
This commit is contained in:
parent
890902e338
commit
41626202ed
@ -1,53 +1,7 @@
|
||||
# This Dockerfile builds an image for MariaDB MaxScale:
|
||||
# https://mariadb.com/products/technology/maxscale
|
||||
# The example configuration file maxscale.cnf should be in the build directory
|
||||
# when building the image.
|
||||
|
||||
FROM alpine:latest
|
||||
|
||||
# Packages required for building MaxScale and Avro-C
|
||||
ARG DEPENDENCIES_PKGS="bash bison cmake curl flex gcc git gnutls gnutls-dev g++ \
|
||||
jansson jansson-dev libedit libedit-dev libgcrypt libgcrypt-dev libstdc++ lua \
|
||||
lua-dev make ncurses ncurses-dev openssl openssl-dev perl sqlite sqlite-dev \
|
||||
sqlite-libs tcl-dev util-linux-dev xz xz-dev"
|
||||
|
||||
# Packages that can be removed after build
|
||||
ARG REM_PKGS="bison bash cmake flex gcc git gnutls-dev g++ jansson-dev \
|
||||
libedit-dev libgcrypt-dev lua-dev make ncurses-dev openssl-dev perl sqlite-dev \
|
||||
tcl-dev xz-dev"
|
||||
|
||||
# MaxScale-specific parameters
|
||||
ARG MS_DIR=/MaxScale_workdir
|
||||
ARG MS_CMAKE_PARS="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DWITH_SCRIPTS=N -DTARGET_COMPONENT=all"
|
||||
ARG MS_BRANCH=develop
|
||||
ARG MS_REPO=https://github.com/mariadb-corporation/MaxScale.git
|
||||
|
||||
# Avro-specific parameters
|
||||
ARG AV_DIR=/Avro_workdir
|
||||
ARG AV_PREF=avro-c-1.8.2
|
||||
ARG AV_ARCH=$AV_PREF.tar.gz
|
||||
ARG AV_URL=ftp://ftp.funet.fi/pub/mirrors/apache.org/avro/avro-1.8.2/c/$AV_ARCH
|
||||
ARG AV_CMAKE_PARS="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC"
|
||||
|
||||
RUN apk -U add $DEPENDENCIES_PKGS && \
|
||||
mkdir $MS_DIR && mkdir $AV_DIR && mkdir $MS_DIR/Build && mkdir $AV_DIR/Build && \
|
||||
cd $AV_DIR && \
|
||||
# Download Avro-C, build and install
|
||||
curl --output $AV_ARCH $AV_URL && \
|
||||
tar -zxvf $AV_ARCH && cd Build && \
|
||||
cmake $AV_CMAKE_PARS ../$AV_PREF && \
|
||||
make install && \
|
||||
cd $MS_DIR && \
|
||||
# Download MaxScale, build and install
|
||||
git clone --depth 1 --branch $MS_BRANCH $MS_REPO && cd Build && \
|
||||
cmake $MS_CMAKE_PARS ../MaxScale && \
|
||||
make install && (./postinst || true) && \
|
||||
# Remove unneeded packages and work directories
|
||||
apk del $REM_PKGS && \
|
||||
cd / && rm -rf $MS_DIR $AV_DIR
|
||||
# Dockerfile for the 2.2 GA version of MariaDB MaxScale
|
||||
FROM centos:7
|
||||
|
||||
RUN curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash && yum -y install maxscale
|
||||
COPY ./maxscale.cnf /etc/
|
||||
ENTRYPOINT ["maxscale", "-d"]
|
||||
ENTRYPOINT ["maxscale", "-d", "-U", "maxscale"]
|
||||
CMD ["-lstdout"]
|
||||
|
@ -1,60 +1,48 @@
|
||||
# MariaDB MaxScale Docker image
|
||||
|
||||
This Docker image runs MariaDB MaxScale. The MaxScale version used to build the
|
||||
image is an unreleased development build so this should not be used for a
|
||||
production system.
|
||||
This Docker image runs the latest GA version of MariaDB MaxScale.
|
||||
|
||||
## Building
|
||||
|
||||
Run the following command to build the image.
|
||||
|
||||
```
|
||||
sudo docker build -t maxscale .
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
MaxScale is a proxy so its configuration is dependent on the use case and there
|
||||
is no generally valid default. The configuration file inside the image (shown in
|
||||
[Default configuration](#default-configuration)) includes only the bare minimum
|
||||
to start MaxScale and has no useful services. The simplest way to add more to
|
||||
the configuration is to place another file (*my_config.cnf*) in a directory
|
||||
(*/my_dir/*) and then mount the directory to */etc/maxscale.cnf.d/* inside the
|
||||
container when starting it. MaxScale will add any files inside
|
||||
*/etc/maxscale.cnf.d/* to its configuration.
|
||||
You must mount your configuration file into `/etc/maxscale.cnf.d/`. To do
|
||||
this, pass it as an argument to the `-v` option:
|
||||
|
||||
```
|
||||
docker run --network host --rm -v /my_dir:/etc/maxscale.cnf.d/ maxscale
|
||||
docker run -v $PWD/my-maxscale.cnf:/etc/maxscale.cnf.d/my-maxscale.cnf maxscale:latest
|
||||
```
|
||||
|
||||
In the examples, the Docker network mode is set to *host* so that the container
|
||||
has full network access (`--network host`).
|
||||
|
||||
To replace the configuration file completely, start MaxScale with `-f <path_to_config>`.
|
||||
Adding custom options removes all default options defined in the image. When
|
||||
adding new flags to MaxScale, one should add back `-l stdout` to print log to
|
||||
stdout.
|
||||
By default, MaxScale runs with the `-l stdout` arguments. To explicitly
|
||||
define a configuration file, use the `-f /path/to/maxscale.cnf` argument
|
||||
and add `-l stdout` after it.
|
||||
|
||||
```
|
||||
docker run --network host --rm -v /my_dir:/container_dir maxscale -l stdout -f /container_dir/my_config.cnf
|
||||
```
|
||||
|
||||
To save logs to */my_dir*, remove the `-l stdout` and set */container_dir* as
|
||||
log directory with the option `-L /container_dir`.
|
||||
|
||||
```
|
||||
docker run --network host --rm -v /my_dir:/container_dir maxscale -L /container_dir -f /container_dir/my_config.cnf
|
||||
docker run --network host --rm -v /my_dir:/container_dir maxscale -f /path/to/maxscale.cnf -l stdout
|
||||
```
|
||||
|
||||
## Default configuration
|
||||
|
||||
```
|
||||
# MaxScale documentation on GitHub:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Documentation-Contents.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Documentation-Contents.md
|
||||
|
||||
# Complete list of configuration options:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Getting-Started/Configuration-Guide.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Getting-Started/Configuration-Guide.md
|
||||
|
||||
# Global parameters
|
||||
|
||||
[maxscale]
|
||||
threads=2
|
||||
threads=auto
|
||||
|
||||
# This service enables the use of the MaxAdmin interface
|
||||
# MaxScale administration guide:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Reference/MaxAdmin.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Reference/MaxAdmin.md
|
||||
[MaxAdmin-Service]
|
||||
type=service
|
||||
router=cli
|
||||
@ -66,27 +54,21 @@ protocol=maxscaled
|
||||
socket=default
|
||||
```
|
||||
|
||||
## Example configuration extension
|
||||
## Example base configuration
|
||||
|
||||
```
|
||||
# Server definitions
|
||||
# Set the address of the server to the network address of a MySQL server.
|
||||
|
||||
[server1]
|
||||
type=server
|
||||
address=127.0.0.1
|
||||
port=3306
|
||||
protocol=MySQLBackend
|
||||
# Global parameters
|
||||
[maxscale]
|
||||
threads=auto
|
||||
|
||||
# Monitor for the servers
|
||||
# This will keep MaxScale aware of the state of the servers.
|
||||
# MySQL Monitor documentation:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Monitors/MySQL-Monitor.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Monitors/MariaDB-Monitor.md
|
||||
|
||||
[MySQL-Monitor]
|
||||
[MariaDB-Monitor]
|
||||
type=monitor
|
||||
module=mysqlmon
|
||||
servers=server1
|
||||
module=mariadbmon
|
||||
user=myuser
|
||||
passwd=mypwd
|
||||
monitor_interval=1000
|
||||
@ -95,23 +77,21 @@ monitor_interval=1000
|
||||
# Service Definition for a read-only service and a read/write splitting service.
|
||||
|
||||
# ReadConnRoute documentation:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Routers/ReadConnRoute.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Routers/ReadConnRoute.md
|
||||
|
||||
[Read-Only-Service]
|
||||
type=service
|
||||
router=readconnroute
|
||||
servers=server1
|
||||
user=myuser
|
||||
passwd=mypwd
|
||||
router_options=slave
|
||||
|
||||
# ReadWriteSplit documentation:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Routers/ReadWriteSplit.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Routers/ReadWriteSplit.md
|
||||
|
||||
[Read-Write-Service]
|
||||
type=service
|
||||
router=readwritesplit
|
||||
servers=server1
|
||||
user=myuser
|
||||
passwd=mypwd
|
||||
max_slave_connections=100%
|
||||
@ -131,3 +111,10 @@ service=Read-Write-Service
|
||||
protocol=MySQLClient
|
||||
port=4006
|
||||
```
|
||||
|
||||
For base configurations, servers are defined at runtime. Run the following
|
||||
command to create a server and link it into all services and monitors.
|
||||
|
||||
```
|
||||
maxctrl create server <name> <host> <port> --monitors MariaDB-Monitor --services Read-Only-Service Read-Write-Service
|
||||
```
|
||||
|
@ -1,21 +1,15 @@
|
||||
# Server definitions
|
||||
# Set the address of the server to the network address of a MySQL server.
|
||||
|
||||
[server1]
|
||||
type=server
|
||||
address=127.0.0.1
|
||||
port=3306
|
||||
protocol=MySQLBackend
|
||||
# Global parameters
|
||||
[maxscale]
|
||||
threads=auto
|
||||
|
||||
# Monitor for the servers
|
||||
# This will keep MaxScale aware of the state of the servers.
|
||||
# MySQL Monitor documentation:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Monitors/MySQL-Monitor.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Monitors/MariaDB-Monitor.md
|
||||
|
||||
[MySQL-Monitor]
|
||||
[MariaDB-Monitor]
|
||||
type=monitor
|
||||
module=mysqlmon
|
||||
servers=server1
|
||||
module=mariadbmon
|
||||
user=myuser
|
||||
passwd=mypwd
|
||||
monitor_interval=1000
|
||||
@ -24,23 +18,21 @@ monitor_interval=1000
|
||||
# Service Definition for a read-only service and a read/write splitting service.
|
||||
|
||||
# ReadConnRoute documentation:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Routers/ReadConnRoute.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Routers/ReadConnRoute.md
|
||||
|
||||
[Read-Only-Service]
|
||||
type=service
|
||||
router=readconnroute
|
||||
servers=server1
|
||||
user=myuser
|
||||
passwd=mypwd
|
||||
router_options=slave
|
||||
|
||||
# ReadWriteSplit documentation:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Routers/ReadWriteSplit.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Routers/ReadWriteSplit.md
|
||||
|
||||
[Read-Write-Service]
|
||||
type=service
|
||||
router=readwritesplit
|
||||
servers=server1
|
||||
user=myuser
|
||||
passwd=mypwd
|
||||
max_slave_connections=100%
|
||||
|
@ -1,18 +1,12 @@
|
||||
# MaxScale documentation on GitHub:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Documentation-Contents.md
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Documentation-Contents.md
|
||||
|
||||
# Complete list of configuration options:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Getting-Started/Configuration-Guide.md
|
||||
|
||||
# Global parameters
|
||||
|
||||
[maxscale]
|
||||
threads=2
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Getting-Started/Configuration-Guide.md
|
||||
|
||||
# This service enables the use of the MaxAdmin interface
|
||||
# MaxScale administration guide:
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/develop/Documentation/Reference/MaxAdmin.md
|
||||
|
||||
# https://github.com/mariadb-corporation/MaxScale/blob/2.2/Documentation/Reference/MaxAdmin.md
|
||||
[MaxAdmin-Service]
|
||||
type=service
|
||||
router=cli
|
||||
|
Loading…
x
Reference in New Issue
Block a user