容器化运维操作(六)-Docker-compose——基本介绍 & 搭建本地mongo+mongo-express服务 & 应用-mongoose+mongodb

Docker-compose介绍

通过 Docker-Compose 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

在这里插入图片描述

Compose 中有两个重要的概念:

  • 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose .

安装方法:

#下载
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

常见使用:

前面的例子,使用docker-compose改写:

version: '3'
services:
  mysql:
    image: mysql
    container_name: test-mysql
    ports:
    - "8000:3306"
    environment:
    - MYSQL_ROOT_PASSWORD=123456

在此文件的当前目录下,使用docker-compose up -d来执行。

生命周期管理:

创建:run/up

启动/停止/删除/重启:start/stop/rm/restart

检视/日志:logs/ps

看两个个复杂的应用:

搭建本地mongo + mongo-express服务

version: '3.1'
services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: 123456

给公司搭建一个git服务器吧?!

项目地址: https://github.com/sameersbn/docker-gitlab

推荐服务器配置:适用于10人的小团队~~~~

2core

2GB+2GB(swap)

文件来源——https://github.com/sameersbn/docker-gitlab/blob/master/docker-compose.yml

docker-compose.git.yml

version: '2'

services:
  redis:
    restart: always
    image: sameersbn/redis:4.0.9-1
    command:
    - --loglevel warning
    volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:10
    volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:11.11.0
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data:Z
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=localhost
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=123456
    - GITLAB_ROOT_EMAIL=itheima@itcast.cn
...

docker-compose在前端里面的使用:

Nodejs + mongodb + koa + vue的应用组合:

特别注意:

视频中,我们使用vue是在局部安装的,所以使用npx命令在进行创建。

vue官网推荐大家进行全局安装:

npm i -g @vue/cli

# 然后使用
vue create myproject

docker-compose.yml

mongoosejs英文网——https://mongoosejs.com/

mongoosejs中文网——http://www.mongoosejs.net/

mongodb官网——https://www.mongodb.com/

version: '3'
services:
  web:
    image: web:1.0
    ports:
    - "8080:80"

  server:
    image: server:1.0
    ports:
    - "3000:3000"
    depends_on:
    - mongodb
    links:
    - mongodb:db

  mongodb:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456

depends_on 决定了容器加载的先后顺序,这里mongdbweb先加载,mongdb创建完成之后,再来创建server

Logo

一站式 AI 云服务平台

更多推荐