docker

docker

Monica个人关系管理系统的Docker部署方案

Monica提供Docker镜像,支持Apache和FPM版本,可通过Docker和docker-compose快速部署。镜像包含MySQL数据库,支持数据持久化和连接现有数据库。多架构支持适配不同硬件平台。简单配置即可启动Monica个人关系管理系统,实现便捷部署和使用。

MonicaDocker容器化数据库部署Github开源项目

Monica's docker image

Docker Pulls Monica's docker

amd64 build status badge arm32v5 build status badge arm32v6 build status badge arm32v7 build status badge arm64v8 build status badge i386 build status badge mips64le build status badge ppc64le build status badge s390x build status badge

MonicaHQ

Monica can run with Docker images.

Prerequisites

You can use Docker and docker-compose to pull or build and run a Monica image, complete with a self-contained MySQL database. This has the nice properties that you don't have to install lots of software directly onto your system, and you can be up and running quickly with a known working environment.

For any help about how to install Docker, see their documentation

Use Monica docker image

There are two versions of the image you may choose from.

The apache tag contains a full Monica installation with an apache webserver. This points to the default latest tag too.

The fpm tag contains a fastCGI-Process that serves the web pages. This image should be combined with a webserver used as a proxy, like apache or nginx.

Using the apache image

This image contains a webserver that exposes port 80. Run the container with:

docker run -d -p 8080:80 monica

Using the fpm image

This image serves a fastCGI server that exposes port 9000. You may need an additional web server that can proxy requests to the fpm port 9000 of the container. Run this container with:

docker run -d -p 9000:9000 monica:fpm

Persistent data storage

To have a persistent storage for your datas, you may want to create volumes for your db, and for monica you will have to save the /var/www/html/storage directory.

Run a container with this named volume:

docker run -d -v monica_data:/var/www/html/storage monica

Connect to a mysql database

Monica needs a database connection, and currently supports mysql/mariadb only. Run these to have a running environment:

mysqlCid="$(docker run -d \ -e MYSQL_RANDOM_ROOT_PASSWORD=true \ -e MYSQL_DATABASE=monica \ -e MYSQL_USER=homestead \ -e MYSQL_PASSWORD=secret \ "mariadb:11")" docker run -d \ --link "$mysqlCid":mysql \ -e DB_HOST=mysql \ -p 8080:80 \ monica

If you want to use a mysql installation that already exists, you can pass the database environment variables directly into the docker run command, with DB_HOST indicating the IP address of the MySQL database. Ensure all permissions are granted to the user specified in the enviornment variable DB_USERNAME.

docker run -d \ -e DB_PORT=3306 \ -e DB_DATABASE=monica \ -e DB_USERNAME=homestead \ -e DB_PASSWORD=secret \ -e DB_HOST=0.0.0.0 \ -p 8080:80 \ monica

Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account.

Run commands inside the container

Like every Laravel application, the php artisan command is very usefull for Monica. To run a command inside the container, run

docker exec CONTAINER_ID php artisan COMMAND

or for docker-compose

docker-compose exec monica php artisan COMMAND

where monica is the name of the service in your docker-compose.yml file.

Running the image with docker-compose

See some examples of docker-compose possibilities in the example section.


Apache version

This version will use the apache image and add a mysql container. The volumes are set to keep your data persistent. This setup provides no ssl encryption and is intended to run behind a proxy.

Make sure to pass in values for APP_KEY variable before you run this setup.

Set APP_KEY to a random 32-character string. You can for instance copy and paste the output of echo -n 'base64:'; openssl rand -base64 32.

  1. Create a docker-compose.yml file
version: "3.4" services: app: image: monica depends_on: - db ports: - 8080:80 environment: - APP_KEY= - DB_HOST=db - DB_USERNAME=usermonica - DB_PASSWORD=secret volumes: - data:/var/www/html/storage restart: always db: image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica - MYSQL_USER=usermonica - MYSQL_PASSWORD=secret volumes: - mysql:/var/lib/mysql restart: always volumes: data: name: data mysql: name: mysql
  1. Set a value for APP_KEY variable before you run this setup. You can for instance copy and paste the output of

    echo -n 'base64:'; openssl rand -base64 32
  2. Run

    docker-compose up -d

    Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account.

  3. Run this command once:

    docker-compose exec app php artisan setup:production

FPM version

When using FPM image, you will need another container with a webserver to proxy http requests. In this example we use nginx with a basic container to do this.

  1. Download nginx.conf and Dockerfile file for nginx image. An example can be found on the example section
    mkdir web curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/nginx.conf -o web/nginx.conf curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/Dockerfile -o web/Dockerfile

The web container image should be pre-build before each deploy with: docker-compose build

  1. Create a docker-compose.yml file
version: "3.4" services: app: image: monica:fpm depends_on: - db environment: - APP_KEY= - DB_HOST=db - DB_USERNAME=usermonica - DB_PASSWORD=secret volumes: - data:/var/www/html/storage restart: always web: build: ./web ports: - 8080:80 depends_on: - app volumes: - data:/var/www/html/storage:ro restart: always db: image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica - MYSQL_USER=usermonica - MYSQL_PASSWORD=secret volumes: - mysql:/var/lib/mysql restart: always volumes: data: name: data mysql: name: mysql
  1. Set a value for APP_KEY variable before you run this setup. You can for instance copy and paste the output of

    echo -n 'base64:'; openssl rand -base64 32
  2. Run

    docker-compose up -d

    Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account.

  3. Run this command once:

    docker-compose exec app php artisan setup:production

Make Monica available from the internet

To expose your Monica instance for the internet, it's important to set APP_ENV=production in your .env file or environment variables. In this case https scheme will be mandatory.

Using a proxy webserver on the host

One way to expose your Monica instance is to use a proxy webserver from your host with SSL capabilities. This is possible with a reverse proxy.

Using a proxy webserver container

See some examples of docker-compose possibilities in the example section to show how to a proxy webserver with ssl capabilities.

编辑推荐精选

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多