Docker安装

鸣谢

此篇由焦富涛贡献,为社区提供了 Docker 版本。人人为我,我为人人!而且极其注重细节,甚至细腻到中英文之间空格的控制。

About Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Install Docker

我们重点说明docker在centos和ubuntu操作系统下的安装和使用,Mac下安装比较简单,直接下载dmg镜像安装即可,使用和centos,ubuntu基本无异,不推荐在windows下部署,会有文件路径问题抽风。

  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce -y
    sudo systemctl enable docker
    sudo systemctl start docker

在安装过程中,也许会遇到Requires: container-selinux >= 2.9 的异常;可以打开Centos下载包中的最新container-selinux包的地址,然后运行:



  1. sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm


  1. sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo apt-key fingerprint 0EBFCD88
    sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
    sudo apt-get update
    sudo apt-get install docker-ce

https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac

Install docker-compose

install docker-compose



  1. pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple/


如果pip不存在,可以尝试



  1. sudo yum install python-pip
    sudo pip install upgrade pip


NEW environment file

在docker-compose.yml同级目录新建walle.env,连接数据库MYSQL_USER默认使用root,如需使用其他用户,需自建用户更改walle.env文件vi walle.env



  1. # Set MySQL/Rails environment
    MYSQL_USER=root
    MYSQL_PASSWORD=walle
    MYSQL_DATABASE=walle
    MYSQL_ROOT_PASSWORD=walle
    MYSQL_HOST=db
    MYSQL_PORT=3306


Prepare Before Deploy

vim docker-compose.yml



  1. # docker version: 18.06.0+
    # docker-compose version: 1.23.2+
    # OpenSSL version: OpenSSL 1.1.0h
    version: "3.7"
    services:
    web:
    image: alenx/walle-web:2.1
    container_name: walle-nginx
    hostname: nginx-web
    ports:
    # 如果宿主机80端口被占用,可自行修改为其他port(>=1024)
    # 0.0.0.0:要绑定的宿主机端口:docker容器内端口80
    - "80:80"
    depends_on:
    - python
    networks:
    - walle-net
    restart: always

    python:
    image: alenx/walle-python:2.1
    container_name: walle-python
    hostname: walle-python
    env_file:
    # walle.env需和docker-compose在同级目录
    - ./walle.env
    command: bash -c "cd /opt/walle_home/ && /bin/bash admin.sh migration && python waller.py"
    expose:
    - "5000"
    volumes:
    - /opt/walle_home/plugins/:/opt/walle_home/plugins/
    - /opt/walle_home/codebase/:/opt/walle_home/codebase/
    - /opt/walle_home/logs/:/opt/walle_home/logs/
    - /root/.ssh:/root/.ssh/
    depends_on:
    - db
    networks:
    - walle-net
    restart: always

    db:
    image: mysql
    container_name: walle-mysql
    hostname: walle-mysql
    env_file:
    - ./walle.env
    command: [ '—default-authentication-plugin=mysql_native_password', '—character-set-server=utf8mb4', '—collation-server=utf8mb4_unicode_ci']
    ports:
    - "3306:3306"
    expose:
    - "3306"
    volumes:
    - /data/walle/mysql:/var/lib/mysql
    networks:
    - walle-net
    restart: always

    networks:
    walle-net:
    driver: bridge


Start

  • 一键启动(快速体验)
  1. docker-compose up -d && docker-compose logs -f
    # 打开浏览器localhost:80

初始登录账号如下,开启你的walle 2.0之旅吧:)



  1. 超管:super@walle-web.io \ Walle123
    所有者:owner@walle-web.io \ Walle123
    负责人:master@walle-web.io \ Walle123
    开发者:developer@walle-web.io \ Walle123
    访客:reporter@walle-web.io \ Walle123


  • 常用操作
  1. # 构建服务
    docker-compose build
    # 启动服务,启动过程中可以直接查看终端日志,观察启动是否成功
    docker-compose up
    # 启动服务在后台,如果确认部署成功,则可以使用此命令,将应用跑在后台,作用类似 nohup python waller.py &
    docker-compose up -d
    # 查看日志,效果类似 tail -f waller.log
    docker-compose logs -f
    # 停止服务,会停止服务的运行,但是不会删除服务所所依附的网络,以及存储等
    docker-compose stop
    # 删除服务,并删除服务产生的网络,存储等,并且会关闭服务的守护
    docker-compose down

Error

如果遇见一下错误,请docker-compose down之后再docker-compose up一次就可以了,这是mysql没有初始化完,就启动了python-serverpermission

打赏或者star