Flask Vue.js全栈开发|第21章:Docker容器部署

  • 原创
  • Madman
  • /
  • /
  • 0
  • 3993 次阅读

flask vuejs 全栈开发-min.png

Synopsis: 第一部分我们手动启动 MySQL、Redis、Elasticsearch、Python、Nginx 等容器,第二部分使用 Docker Compose 来编排我们的服务,非常推荐大家试一下 Docker 容器来运行我们的微型博客应用,到此为止,本系列就全部完结了,感谢大家的关注,接下来将开始 Golang 微服务实战系列,期待您的加入

请确保已正确安装并启动了 Docker 服务,关于 Docker 基本使用方法,请参考: http://www.madmalls.com/blog/post/visualizing-docker-containers-and-images/

假设你已将本项目 最新完整代码 下载到 /home/www 目录下:

[root@CentOS www]# pwd
/home/www
[root@CentOS www]# ls -l
total 12
drwxr-xr-x 5 root root  182 Apr 23 09:44 back-end
drwxr-xr-x 6 root root  214 Apr 23 09:44 front-end
-rw-r--r-- 1 root root 1104 Apr 23 09:44 LICENSE
-rw-r--r-- 1 root root 5389 Apr 23 09:44 README.md

1. MySQL 容器

https://hub.docker.com/_/mysql

创建 MySQL 配置文件,指定字符集为 UTF-8

[root@CentOS www]# mkdir -p $PWD/docker/mysql/conf.d
[root@CentOS www]# vim $PWD/docker/mysql/conf.d/custom.cnf
内容如下:

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake

然后将宿主机上的 配置文件数据目录 链接到 MySQL 容器,这样就算后续不小心删除了此容器,数据库中的数据文件还存在于本地,下次再重新启一个 MySQL 容器即可:

[root@CentOS www]# docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=madblog \
  -e MYSQL_USER=testuser \
  -e MYSQL_PASSWORD=password \
  -p 3306:3306 \
  --rm \
  -v $PWD/docker/mysql/conf.d:/etc/mysql/conf.d \
  -v $PWD/docker/mysql/data:/var/lib/mysql \
  mysql:5.6

让我们测试一下连接,再启动一个 MySQL 容器,需要先 链接 上面的 MySQL Server 容器,并设置主机名为 mysql-server,这样 -hmysql-server 才能解析到 MySQL Server 容器所绑定的 IP 地址:

[root@CentOS www]# docker run -it --link mysql:mysql-server --rm mysql:5.6 mysql -hmysql-server -utestuser -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| madblog            |
+--------------------+
2 rows in set (0.00 sec)

mysql> quit
Bye

2. Redis 容器

https://hub.docker.com/_/redis

[root@CentOS www]# docker run -d \
  --name redis \
  -p 6379:6379 \
  --rm \
  -v $PWD/docker/redis/data:/data \
  redis redis-server --appendonly yes

启动此容器时要运行 redis-server --appendonly yes 命令,表示启用了 Redis 数据持久性,所以指定了映射宿主机上的 $PWD/docker/redis/data 目录到容器的 /data 目录

测试连接:

[root@CentOS www]# docker run -it --link redis:redis-server --rm redis redis-cli -h redis-server
redis-server:6379> keys *
(empty list or set)
redis-server:6379> quit

3. Elasticsearch 容器

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

由于我们的代码中使用了 ik 分词器,所以需要在 Elasticsearch 官方提供的镜像中先安装 ik,再保存为修改后的镜像:

# 1. 启动容器
[root@CentOS www]# docker pull docker.elastic.co/elasticsearch/elasticsearch:7.0.0
[root@CentOS www]# docker run -d \
  --name elasticsearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
  docker.elastic.co/elasticsearch/elasticsearch:7.0.0

# 2. 安装 IK 分词器
[root@CentOS www]# docker exec -it elasticsearch /bin/bash
[root@da774b5b5d99 elasticsearch]# elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip
.0.0.zip-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip
[=================================================] 100%?? 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed analysis-ik
[root@da774b5b5d99 elasticsearch]# exit
exit

# 3. 保存为新的镜像
[root@CentOS www]# docker commit elasticsearch my-elasticsearch-ik
sha256:65cca25b877d7c904c7d3b8aa1e36edd1c20e79f614e052a0918eed163f047ad

# 4. 删除容器
[root@CentOS www]# docker rm -f elasticsearch 
elasticsearch

启动我们自己的镜像:

[root@CentOS www]# mkdir -p $PWD/docker/elasticsearch/data

                                
                            
未经允许不得转载: LIFE & SHARE - 王颜公子 » Flask Vue.js全栈开发|第21章:Docker容器部署

分享

作者

作者头像

Madman

如需 Linux / Python 相关问题付费解答,请按如下方式联系我

0 条评论

暂时还没有评论.

专题系列