Docker-compose 安装 Solo

本贴最后更新于 2139 天前,其中的信息可能已经沧海桑田

Docker-compose 安装 Solo

一、环境

System:Ubuntu 18.04.2 LTS
Docker:Docker version 18.09.6, build 481bc77
Docker-compoes: docker-compose version 1.24.0, build 0aa5906
APP: Solo
数据库: Mysql
Web 服务器:nginx

二、安装环境

1、安装 docker

root@root:/home#wget -qO- https://get.docker.com/ | sh root@root:/home# docker -v Docker version 18.09.6, build 481bc77

2、安装 docker-compoes

root@root:/home#apt install python-pip root@root:/home#pip install docker-compose root@root:/home#docker-compose -v docker-compose version 1.24.0, build 0aa5906

三、安装 ssl 证书

1、安装 acme.sh

curl https://get.acme.sh | sh

2、生成证书
现在我使用的是 DNS 验证方式,所以需要获取 DNS 域名账户的认证信息。我域名放在 cloudflare 上,安装官方文档,现在需要 cloudflare ID(ID 就是邮箱),和 cloudflare key。 (Key 可以在 My Profile 找到) 相关文档

export CF_Email="youmail@fly930.com" //这个是ID export CF_Key="1234567890" //这是Key /root/.acme.sh/acme.sh --issue --dns dns_cf -d fly930.com -d www.fly930.com

如果证书成功生成,文件会保存在/root/.acme.sh/fly930.com/ 文件夹下面。

root@root:~/.acme.sh/fly930.com# ls ca.cer fly930.com.cer fly930.com.conf fly930.com.csr fly930.com.csr.conf fly930.com.key fullchain.cer

最后 acme 会帮你创建一个 crontab 定时任务,每天检测一次任务。如果证书过期会自动更新。

root@root:~/.acme.sh/fly930.com# crontab -l 25 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

四、配置相关配置文件

1、创建相关文件

root@root:~# mkdir -p /home/www/solo/conf /home/www/solo/data root@root:~# cd /home/www/solo root@root:/home/www/solo# touch docker-compose.yml root@root:/home/www/solo# touch conf/nginx.conf

2、docker-compose.yml 内容

root@root:/home/www/solo#vi docker-compose.yml version: "3" services: mysql: container_name: mysql image: mysql:5.5.60 restart: always networks: - backend volumes: - ./data:/var/lib/mysql ports: - "3306" environment: - MYSQL_ROOT_PASSWORD=root solo: container_name: solo image: b3log/solo restart: always networks: - frontend - backend ports: - "8080" environment: RUNTIME_DB: "MYSQL" JDBC_USERNAME: "root" JDBC_PASSWORD: "root" JDBC_DRIVER: "com.mysql.jdbc.Driver" JDBC_URL: "jdbc:mysql://mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" command: --listen_port=8080 --server_port=80 --server_scheme=https --server_host=www.fly930.com nginx: container_name: nginx image: nginx:latest networks: - frontend ports: - "80:80" - "443:443" volumes: - "./conf:/etc/nginx/conf.d" - "/root/.acme.sh/fly930.com:/etc/nginx/conf.d/fly930.com" networks: frontend: backend:

3、nginx.conf 内容

root@root:/home/www/solo#vi conf/nginx.conf gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; server_tokens off; access_log off; server { listen 80; server_name www.fly930.com fly930.com; return 301 https://$server_name$request_uri; } server { server_name www.fly930.com fly930.com; listen 443 ssl http2; ssl_certificate /etc/nginx/conf.d/fly930.com/fullchain.cer; ssl_certificate_key /etc/nginx/conf.d/fly930.com/fly930.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; ssl_session_cache builtin:1000 shared:SSL:10m; location / { proxy_pass http://solo:8080; } access_log /etc/nginx/conf.d/www.fly930.com.log; }

五、启动 docker-compoes

1、在 solo 目录下运行

root@root:/home/www/solo#docker-compoes up -d Creating network "solo1_backend" with the default driver Creating network "solo1_frontend" with the default driver Creating nginx ... done Creating mysql ... done Creating solo ... done

2、进入 mysql 容器创建 solo 数据库

////进入容器 root@root:/home/www/solo# docker exec -it mysql bash ///连接Mysql root@f115521b4eca:/# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.5.60 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ////////创建solo mysql>CREATE DATABASE IF NOT EXISTS solo DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; Query OK, 1 row affected (0.02 sec) ///////退出数据库 mysql> \q Bye root@f115521b4eca:/# exit exit

3、退出重启一下容器

root@root:/home/www/solo#docker-compoes restart Restarting mysql ... done Restarting nginx ... done Restarting solo ... done

4、最后访问你的域名。开始享受技术带来的欢洛吧 。

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1440 引用 • 10067 回帖 • 491 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖
1 操作
figo930 在 2019-05-21 22:18:11 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...