16、编写单个服务的compose文件

cd /usr/local/bin/
ll
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
cd
docker-compose --version 

1.参考教材152页生成一个mysql8容器,修改容器登录密码为123456

[root@lgz19docker composetest]# vi docker-compose.yml
[root@lgz19docker composetest]# cat docker-compose.yml 
version: '3.7'
services:
  mysql:
    image: mysql:8
    container_name: mysql8_LGZ
    ports:
    - 3306:3306
    command: 
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    environment:
    - MYSQL_ROOT_PASSWORD=123456
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - mysql8-data:/var/lib/mysql
volumes:
  mysql8-data: null
[root@lgz19docker composetest]# docker-compose config 
name: composetest
services:
  mysql:
    command:
    - --default-authentication-plugin=mysql_native_password
    - --character-set-server=utf8mb4
    - --collation-server=utf8mb4_general_ci
    - --explicit_defaults_for_timestamp=true
    - --lower_case_table_names=1
    container_name: mysql8_LGZ
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    image: mysql:8
    networks:
      default: null
    ports:
    - mode: ingress
      target: 3306
      published: "3306"
      protocol: tcp
    volumes:
    - type: bind
      source: /etc/localtime
      target: /etc/localtime
      read_only: true
      bind:
        create_host_path: true
    - type: volume
      source: mysql8-data
      target: /var/lib/mysql
      volume: {}
networks:
  default:
    name: composetest_default
volumes:
  mysql8-data:
    name: composetest_mysql8-data
[root@lgz19docker composetest]# 
[root@lgz19docker composetest]# docker-compose up -d
[+] Running 13/13
 ⠿ mysql Pulled                                                                                         130.4s
   ⠿ 6f28985ad184 Already exists                                                                          0.0s
   ⠿ e7cd18945cf6 Pull complete                                                                           0.6s
   ⠿ ee91068b9313 Pull complete                                                                           9.1s
   ⠿ b4efa1a4f93b Pull complete                                                                           9.2s
   ⠿ f220edfa5893 Pull complete                                                                           9.2s
   ⠿ 74a27d3460f8 Pull complete                                                                          16.8s
   ⠿ 2e11e23b7542 Pull complete                                                                          16.8s
   ⠿ fbce32c99761 Pull complete                                                                          16.8s
   ⠿ 08545fb3966f Pull complete                                                                         128.3s
   ⠿ 5b9c076841dc Pull complete                                                                         128.4s
   ⠿ ef8b369352ae Pull complete                                                                         128.4s
   ⠿ ebd210f0917d Pull complete                                                                         128.4s
[+] Running 3/3
 ⠿ Network composetest_default       Created                                                              0.0s
 ⠿ Volume "composetest_mysql8-data"  Created                                                              0.0s
 ⠿ Container mysql8_LGZ              Started                                                              1.1s
[root@lgz19docker composetest]# 
[root@lgz19docker composetest]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
mysql8_LGZ          "docker-entrypoint.s…"   mysql               running             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
[root@lgz19docker composetest]# 

2.在容器中创建一个数据库名为mysql8XXX,如下,在navicate客户端中访问此容器,创建一上数据表,测试外部和容器内部的连通性。

docker exec -it mysql8_LGZ mysql -uroot -p123456
create database mysql8LGZku;
use mysql8LGZku;
create table student(id char(10) primary key,name char(20) not null,sex char(2) not null, birth date);
insert into student values('20234660','刘国振','男','2000-09-13');
insert into student values('20234663','张三','女','2001-03-24');
mysql> select * from mysql8LGZku.student;
+----------+------+-----+------------+
| id       | name | sex | birth      |
+----------+------+-----+------------+
| 20234660 |      |     | 2000-09-13 |
| 20234663 |      |     | 2001-03-24 |
+----------+------+-----+------------+
2 rows in set (0.00 sec)

mysql> 

【中文无法显示】

3.继续修改compose文件,修改root用户的登录密码为111111,对外映射端口为3309

docker-compose stop
docker-compose down --volumes 
[root@lgz19docker composetest]# vi docker-compose.yml
[root@lgz19docker composetest]# cat docker-compose.yml 
version: '3.7'
services:
  mysql:
    image: mysql:8
    container_name: mysql8_LGZ2
    ports:
    - 3309:3306
    command: 
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    environment:
    - MYSQL_ROOT_PASSWORD=111111
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - mysql8-data:/var/lib/mysql
volumes:
  mysql8-data: null
[root@lgz19docker composetest]# 

docker-compose config 
docker-compose up -d
docker-compose ps
docker ps -a

4.进入容器内部创建一个数据库和一个数据表进行测试

docker exec -it mysql8_LGZ2 mysql -uroot -p111111
create database mysql8LGZ2ku;
use mysql8LGZ2ku;
create table student(id char(10) primary key,name char(20) not null,sex char(2) not null, birth date);
insert into student values('20234660','刘国振','男','2000-09-13');
insert into student values('20234663','张三','女','2001-03-24');
mysql> select * from mysql8LGZ2ku.student;

5.在navicate中使用3309端口连接,查看是否可以看到上述第4步的数据表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江西理工课堂课后实训作业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值