Skip to content

使用DockerCompose启动容器 ​

1.Docker Compose 启动 MySQL ​

编写docker-compose.yml

yaml
version: '3.8'
services:
  mysql:
    container_name: mysql
    image: mysql
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
      - ./mysql/db:/docker-entrypoint-initdb.d/
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "TZ=Asia/Shanghai"
    command:
      --default-time-zone='+8:00'
      --default-authentication-plugin=mysql_native_password
      --innodb-buffer-pool-size=64M
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --max_connections=1000
      --innodb_lock_wait_timeout=500

一些初始化配置

mysql容器脚本初始化

有时候,我们在容器启动时需要初始化一下sql脚本,如下

  • 有需要初始化的sql脚本,可以放到 ./mysql/db 下,容器启动会自动执行
  • 连接MySQL: ip(127.0.0.1):3306 root/root
txt
.
├── docker-compose.yml
└── mysql
    └── db
        └── ufs.sql    # 数据库脚本,创建ufs库,和各种表,以及初始化数据

启动容器

shell
[root@localhost ufs]# docker compose up -d mysql
[+] Running 13/13
 ✔ mysql 12 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                          26.6s 
   ✔ 72a69066d2fe Pull complete                                                                                                                                    5.5s 
   ✔ 93619dbc5b36 Pull complete                                                                                                                                    5.5s 
   ✔ 99da31dd6142 Pull complete                                                                                                                                    5.7s 
   ✔ 626033c43d70 Pull complete                                                                                                                                    8.1s 
   ✔ 37d5d7efb64e Pull complete                                                                                                                                    8.2s 
   ✔ ac563158d721 Pull complete                                                                                                                                   10.1s 
   ✔ d2ba16033dad Pull complete                                                                                                                                   10.2s 
   ✔ 688ba7d5c01a Pull complete                                                                                                                                   10.3s 
   ✔ 00e060b6d11d Pull complete                                                                                                                                   23.6s 
   ✔ 1c04857f594f Pull complete                                                                                                                                   23.6s 
   ✔ 4d7cfa90e6ea Pull complete                                                                                                                                   23.7s 
   ✔ e0431212d27d Pull complete                                                                                                                                   23.7s 
[+] Running 2/2
 ✔ Network ufs_default  Created                                                                                                                                    0.0s 
 ✔ Container mysql      Started                                                                                                                                    0.5s 
[root@localhost ufs]# 
[root@localhost ufs]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                                  NAMES
5d79934bded3   mysql     "docker-entrypoint.s…"   5 seconds ago   Up 5 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
[root@localhost ufs]#

验证是否部署完成

ufs数据库已经初始化完成

shell
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| ufs                |
+--------------------+
5 rows in set (0.00 sec)

2.Docker Compose 启动 Redis ​

编写docker-compose.yml

yaml
version: '3.8'
services:
  redis:
    container_name: redis
    image: redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./redis/conf/redis.conf:/etc/redis/redis.conf
      - ./redis/data:/data
    command: redis-server /etc/redis/redis.conf

启动容器

shell
[root@localhost ufs]# docker compose up -d redis
[+] Running 7/7
 ✔ redis 6 layers [⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                  4.0s 
   ✔ a2abf6c4d29d Already exists                                                                                                                                   0.0s 
   ✔ c7a4e4382001 Already exists                                                                                                                                   0.0s 
   ✔ 4044b9ba67c9 Already exists                                                                                                                                   0.0s 
   ✔ c8388a79482f Already exists                                                                                                                                   0.0s 
   ✔ 413c8bb60be2 Already exists                                                                                                                                   0.0s 
   ✔ 1abfd3011519 Already exists                                                                                                                                   0.0s 
[+] Running 1/1
 ✔ Container redis  Started

测试连接

shell
[root@localhost ufs]# docker exec -it redis bash
root@5f059715a1ca:/data# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

2.Docker Compose 启动 Mongo ​

自己构建镜像

txt
mongo/
├── conf
│    └── mongod.conf
└── Dockerfile

mongod.conf

yaml
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8
      directoryForIndexes: true

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#replication:
replication:
   oplogSizeMB: 51200
   replSetName: rs0

Dockerfile

shell
FROM mongo:4.4.0

ADD ./config/mongod.conf /etc/mongo/mongod.conf

编写docker-compose.yml

yaml
version: '3.8'
services:
  mongo:
    container_name: mongo
    #image: mongo:4.4.0
    build:
      context: ./mongo
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - ./mongo/db:/data/db
      - ./mongo/log:/var/log/mongodb
      - ./mongo/config:/etc/mongo

启动容器

shell
[root@localhost ufs]# docker compose up -d mongo
[+] Building 15.6s (7/7) FINISHED                                                                                                                                       
 => [internal] load build definition from Dockerfile                                                                                                               0.0s
 => => transferring dockerfile: 160B                                                                                                                               0.0s
 => [internal] load .dockerignore                                                                                                                                  0.0s
 => => transferring context: 2B                                                                                                                                    0.0s
 => [internal] load metadata for docker.io/library/mongo:4.4.0                                                                                                    15.6s
 => [internal] load build context                                                                                                                                  0.0s
 => => transferring context: 858B                                                                                                                                  0.0s
 => CACHED [1/2] FROM docker.io/library/mongo:4.4.0@sha256:77f3d623d475c56ab43d61864bc3aa610953869724dbbea325989a0718741d1c                                        0.0s
 => [2/2] ADD ./config/mongod.conf /etc/mongo/mongod.conf                                                                                                          0.0s
 => exporting to image                                                                                                                                             0.0s
 => => exporting layers                                                                                                                                            0.0s
 => => writing image sha256:6ee7dfe78541d28c4f4195ca5a2964d615499dad0bc761d3a83b7c018c6d769b                                                                       0.0s
 => => naming to docker.io/library/ufs-mongo                                                                                                                       0.0s
[+] Running 1/1
 ✔ Container mongo  Started                                                                                                                                        1.7s 
[root@localhost ufs]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS         PORTS                                                  NAMES
42e81872c719   ufs-mongo   "docker-entrypoint.s…"   12 seconds ago   Up 9 seconds   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp          mongo