diff --git a/apaches/Dockerfile b/apaches/Dockerfile index 0d53669..3a00e0d 100644 --- a/apaches/Dockerfile +++ b/apaches/Dockerfile @@ -2,11 +2,22 @@ from php:7.4.33-apache RUN apt-get update && apt-get install -y \ git \ +# locales \ +# locales-all \ +# gettext \ libicu-dev\ && docker-php-ext-configure intl \ && docker-php-ext-install intl \ && rm -rf /var/lib/apt/lists/* +#RUN sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen && \ +# locale-gen +# dpkg-reconfigure --frontend=noninteractive locales +#ENV LANG fr_FR.UTF-8 +#ENV LANGUAGE fr_FR:fr +#ENV GDM_LANG fr_FR.UTF-8 +#ENV LC_ALL fr_FR.UTF-8 + RUN printf "[safe]\n\tdirectory = /var/www\n" > /etc/gitconfig RUN a2enmod remoteip rewrite \ diff --git a/mattermost/testing/Dockerfile b/mattermost/testing/Dockerfile deleted file mode 100644 index c723954..0000000 --- a/mattermost/testing/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM alpine:3.11 - -# Some ENV variables -ENV PATH="/mattermost/bin:${PATH}" -ENV MM_VERSION=6.1.0 - -# Build argument to set Mattermost edition -ARG PUID=2000 -ARG PGID=2000 - - -# Install some needed packages -RUN apk add --no-cache \ - ca-certificates \ - curl \ - jq \ - libc6-compat \ - libffi-dev \ - libcap \ - linux-headers \ - mailcap \ - netcat-openbsd \ - xmlsec-dev \ - tzdata \ - postgresql-client \ - && rm -rf /tmp/* - -# Get Mattermost -RUN mkdir -p /mattermost/data /mattermost/plugins /mattermost/client/plugins \ - && curl https://releases.mattermost.com/$MM_VERSION/mattermost-team-$MM_VERSION-linux-amd64.tar.gz | tar -xvz \ - && cp /mattermost/config/config.json /config.json.save \ - && rm -rf /mattermost/config/config.json \ - && addgroup -g ${PGID} mattermost \ - && adduser -D -u ${PUID} -G mattermost -h /mattermost -D mattermost \ - && chown -R mattermost:mattermost /mattermost /config.json.save /mattermost/plugins /mattermost/client/plugins \ - && setcap cap_net_bind_service=+ep /mattermost/bin/mattermost - -# Expose port 8000 of the container -EXPOSE 8000 - -#Healthcheck to make sure container is ready -HEALTHCHECK CMD curl --fail http://localhost:8000/api/v4/system/ping || exit 1 - -USER mattermost - -# Configure entrypoint and command -COPY entrypoint.sh / -ENTRYPOINT ["/entrypoint.sh"] -WORKDIR /mattermost -CMD ["mattermost"] diff --git a/mattermost/testing/docker-compose.yml b/mattermost/testing/docker-compose.yml index c8ce2c7..b99e865 100644 --- a/mattermost/testing/docker-compose.yml +++ b/mattermost/testing/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.8" services: db: - image: postgres:12.8-alpine + image: postgres:12.18-alpine restart: unless-stopped volumes: - ${DATA_PATH}/db/var/lib/postgresql/data:/var/lib/postgresql/data @@ -11,10 +11,15 @@ services: env_file: secrets/db.secrets app: - build: . - image: mm_app:6.1.0 + image: mm_app:${MM_VERSION} + build: + context: https://github.com/mattermost/mattermost.git#v${MM_VERSION}:server/build + args: + MM_PACKAGE: https://releases.mattermost.com/${MM_VERSION}/mattermost-team-${MM_VERSION}-linux-amd64.tar.gz depends_on: - db + security_opt: + - no-new-privileges:true restart: unless-stopped networks: - default @@ -22,24 +27,15 @@ services: volumes: - ${DATA_PATH}/app/mattermost/config:/mattermost/config:rw - ${DATA_PATH}/app/mattermost/data:/mattermost/data:rw - - ${DATA_PATH}/app/mattermost/logs:/mattermost/logs:rw - ${DATA_PATH}/app/mattermost/plugins:/mattermost/plugins:rw - - ${DATA_PATH}/app/mattermost/client-plugins:/mattermost/client/plugins:rw - /etc/localtime:/etc/localtime:ro env_file: secrets/app.secrets labels: - "traefik.enable=true" - "traefik.docker.network=proxy" - - "traefik.http.services.mm-test-web-svc.loadbalancer.server.port=8000" - - "traefik.http.routers.mm-test-https.service=mm-test-web-svc" - - "traefik.http.middlewares.mm-test-redirect-websecure.redirectscheme.scheme=https" - - "traefik.http.routers.mm-test-http.middlewares=mm-test-redirect-websecure" - - "traefik.http.routers.mm-test-http.rule=Host(`${CN}`)" - - "traefik.http.routers.mm-test-http.entrypoints=web" - - "traefik.http.routers.mm-test-https.rule=Host(`${CN}`)" - - "traefik.http.routers.mm-test-https.entrypoints=websecure" - - "traefik.http.routers.mm-test-https.tls=true" - - "traefik.http.routers.mm-test-https.tls.certresolver=myhttpchallenge" + - "traefik.http.services.mm-test-svc.loadbalancer.server.port=8065" + - "traefik.http.routers.mm-test.entrypoints=websecure" + - "traefik.http.routers.mm-test.rule=Host(`${CN}`)" networks: proxy: diff --git a/mattermost/testing/entrypoint.sh b/mattermost/testing/entrypoint.sh deleted file mode 100755 index fbff314..0000000 --- a/mattermost/testing/entrypoint.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/sh - -# Function to generate a random salt -generate_salt() { - tr -dc 'a-zA-Z0-9' "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.LogSettings.EnableConsole = true' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.LogSettings.ConsoleLevel = "ERROR"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.FileSettings.Directory = "/mattermost/data/"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.FileSettings.EnablePublicLink = true' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".FileSettings.PublicLinkSalt = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.SendEmailNotifications = false' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.FeedbackEmail = ""' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.SMTPServer = ""' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.EmailSettings.SMTPPort = ""' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".EmailSettings.InviteSalt = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".EmailSettings.PasswordResetSalt = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.RateLimitSettings.Enable = true' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.SqlSettings.DriverName = "postgres"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq ".SqlSettings.AtRestEncryptKey = \"$(generate_salt)\"" "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - jq '.PluginSettings.Directory = "/mattermost/plugins/"' "$MM_CONFIG" >"$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG" - else - echo "Using existing config file $MM_CONFIG" - fi - - # Configure database access - if [ -z "$MM_SQLSETTINGS_DATASOURCE" ] && [ -n "$MM_USERNAME" ] && [ -n "$MM_PASSWORD" ]; then - echo "Configure database connection..." - # URLEncode the password, allowing for special characters - ENCODED_PASSWORD=$(printf %s "$MM_PASSWORD" | jq -s -R -r @uri) - export MM_SQLSETTINGS_DATASOURCE="postgres://$MM_USERNAME:$ENCODED_PASSWORD@$DB_HOST:$DB_PORT_NUMBER/$MM_DBNAME?sslmode=$DB_USE_SSL&connect_timeout=10" - echo "OK" - else - echo "Using existing database connection" - fi - - # Wait another second for the database to be properly started. - # Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up" - until pg_isready -h $DB_HOST -p $DB_PORT_NUMBER -U $MM_USERNAME - do - echo "Database is not ready yet. Waiting 5 seconds." - sleep 5 - done - - echo "Starting mattermost" -fi - -exec "$@" diff --git a/traefik/docker-compose.yml b/traefik/docker-compose.yml index 7144229..fb11a36 100644 --- a/traefik/docker-compose.yml +++ b/traefik/docker-compose.yml @@ -12,6 +12,11 @@ services: - ${DATA_PATH}/letsencrypt:/letsencrypt - ${DATA_PATH}/config/:/etc/traefik container_name: traefik + logging: + driver: "json-file" + options: + max-size: "200k" + max-file: "3" labels: - "co.elastic.logs/module=traefik" - "co.elastic.logs/fileset=access"