docker中搭建mysql+nginx的静态环境

背景

最近因为和老师吹牛逼,说自己懂docker。揽了个docker的活(还没有钱),熬了两天夜终于做完了。

简单来说这个环境只需要docker和mysql,docker中要可以使用nodejs。尽量精简就行。

具体要求

  1. mysql容器和nginx容器之间可以互联 ,搭建两个容器互联,而不是集成到一个容器中一键部署。充分发挥docker灵活轻量级的特点;
  2. mysql容器 mysq容器中可以进行正常的中文显示,运行.sql脚本建立数据库。(.sql脚本已给);
  3. nginx容器 这个容器中可以运行nodejs;

docker安装

这个部分就不详细写了,比较基础。参照其他博客即可。

容器搭建

mysql容器搭建

mysql容器中要自己建库,建库的sql已经给了。所以首先:(我这里直接docker pull 安装,比较简单。推荐大家使用dockerfile,也不是很难还比较灵活)

拉取mysql镜像

$ docker pull mysql:5.6

我这里使用mysql5.6的版本,比较稳定。

运行mysql

$ docker run -p 3306:3306 --name mysql -v ~/mysql/conf:/etc/mysql/conf.d -v ~/mysql/logs:/logs -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.6

这一句代码中,
-v表示 将主机某个目录 挂载到 docker的某个目录 ,类似于虚拟机共享文件吧。

-d 为后台运行

-e就是设置用户名密码

这些语句都是通用的,在之后建立其他docker也会用到。

进入容器,设置数据库

$  docker ps

此时应该已经可以看到mysql容器的id了。使用语句

$ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

进入。其中,775c7c9ee1e1应该替换为当前mysql容器的id。

使容器正常显示汉语

进入容器后权限应该是root,所以我就不写sudo了

$ apt-get update
$ apt-get install vim
$ vim /etc/mysql/mysql.conf.d/mysql.cnf

ps 如果发现apt-get update太慢或者卡住,可以尝试换源。方法:

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ vim /etc/apt/sources.list

以下是我的源:

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

在文件中,添加如下代码

[mysql] 
default-character-set = utf8

[mysql.server] 
default-character-set = utf8

[mysqld_safe] 
default-character-set = utf8

[client] 
default-character-set = utf8

[mysqld] 
character_set_server=utf8 
init_connect=’SET NAMES utf8’

保存并退出。

添加数据库

使用.sql语句建立数据库
把给定的.sql脚本放在共享目录下。我们这里是宿主机的如下目录

~/mysql/data

进入mysql容器中,进入共享目录,执行脚本

$ cd /var/lib/mysql
$ mysql -u root -p
mysql> source /aaa.sql

aaa.sql即是我的sql脚本,如果你没有的话,可以使用命令行创建数据库。之后可以使用

SHOW DATABASES;
SELECT * FROM 表名;

察看数据库是否成功建立,里面有内容。

退出容器

使用ctrul +p+q退出

搭建nginx容器

拉取并运行镜像

和之前一样,pull镜像后运行

$ docker pull nginx
$ docker run --name nginx -p 80:80 -v ~/web/www:/usr/share/nginx/html -v ~/web/nginx/conf.d:/etc/nginx/conf.d --link mysql:mysql -d nginx

第二句代码中的 --link mysql:mysql 就是把两个容器连接。
注意

  1. docker官方现在不推荐 --link 使用。因为我赶时间,就不先学新的了。
  2. 不要把两个容器相互连接。如果你一直按照本教程走的话不会发生这种情况。但是我在当时创建完nginx容器后,mysql容器有一些问题。我就把mysql容器删了,重新创建了一个同名的。并且加入了 --link nginx:nginx 导致两个容器相互连接。在运行的时候是发现不了问题 的。但是当我后来把两个容器同时重启时,就无法工作了,现在正在重新建。。。都是血泪在这

进入容器中,安装node

还是用之前的命令进入容器

$ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

更新后安装node

$ apt-get update 
$ sudo apt-get install python-software-properties
$ apt-get install curl
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install nodejs

安装完成后可以看下版本

$ node -v
v8.5.0
$ npm -v
v5.3.0

至此已经完成了。如果想看效果的话,可以写一个简单的首页放在宿主机 ~/web/www目录下。也就是docker的/usr/share/nginx/html目录下。比如:

hello world!

哈哈哈要注意我没装php,所以不能写php脚本。如果要加php的话请搜:
docker搭建LNMP

docker容器迁移

备份容器

将运行的容器快照制作成镜像

$ docker commit -p 94e44c7fd742 nginx
$ docker commit -p 8bea2bf0d8cc mysql

因为dockerhub是在太慢,我选择直接将镜像保存在本地机器中,通过拷贝传递给别人。

$   docker save -o ~/nginx_mysql/nginx.tar 2e920d5c73b7 
$   docker save -o ~/nginx_mysql/mysql.tar 10e9e003921b

将两个文件压缩后拷贝到新的环境。使用

$	tar -zcvf nginx_mysql.tar.gz  nginx_mysql

迁移

到新的服务器上后,首先需要加载镜像。使用:

$   tar -zxvf  nginx_mysql.tar.gz
$	docker load -i ~/nginx_mysql/nginx.tar
$	docker load -i ~/nginx_mysql/mysql.tar

此时可以使用docker images察看镜像是否加载成功。

运行镜像

docker run -p 3306:3306 --name mysql -v ~/mysql/conf:/etc/mysql/conf.d -v ~/mysql/logs:/logs -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker run --name nginx -p 80:80 -v ~/web/www:/usr/share/nginx/html -v ~/web/nginx/conf.d:/etc/nginx/conf.d --link mysql:mysql -d nginx

然后进入nginx中,运行node mysql.js
打开浏览器察看

参考

《课工厂Docker容器与虚拟化技术》 索书号:TP316.85 249
如何解决mysq中文乱码https://blog.csdn.net/gavinkelland/article/details/77822223
如何运行.sqlhttps://blog.csdn.net/WatermelonMk/article/details/82424067
如何重命名dockerhttp://www.mamicode.com/info-detail-1097347.html
如何安装nodehttps://blog.csdn.net/wangtaoking1/article/details/78005038
换源https://blog.csdn.net/zhangjiahao14/article/details/80554616
docker打包

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要构建一个基于上述技术栈的应用程序,涉及多个组件和技术,下面是一些关键点的简介: 1. **Spring Boot**: 是一个快速开发框架,简化了Java应用的配置和启动过程。 - 示例:用于创建简单的RESTful API服务[^4]。 2. **Spring Cloud**: 提供了一组工具和服务来扩展微服务架构。 - 功能包括服务发现、配置心、API网关等[^5]。 3. **RabbitMQ**: 消息队列服务,支持异步通信和解耦。 - 在Spring Cloud集成,可以用来实现消息驱动架构[^6]。 4. **Redis**: 缓存数据库,提高应用程序性能。 - 可以缓存热点数据或会话信息[^7]。 5. **Elasticsearch**: 分布式搜索和分析引擎,常用于全文检索。 - 支持复杂查询和实时数据分析[^8]。 6. **Xxl-sso**: 企业级权限管理系统,用于身份验证和授权[^9]。 7. **LCN**: 可能指的是Linux容器网络,Docker的基础组件。 - 管理容器间的网络连接[^10]。 8. **Nginx**: 反向代理服务器,优化HTTP请求和负载均衡。 - 与Spring Boot结合时,可能作为API Gateway[^11]。 9. **七牛云**: 对象存储服务,用于文件上传和管理。 - 存储静态资源[^12]。 10. **Swagger2**: 开源API文档生成工具。 - 用于自动生成API文档[^13]。 11. **MySQL**: 关系型数据库,存储业务数据。 - 数据持久化[^14]。 12. **Maven**: 项目管理和依赖管理工具。 - 用于构建和打包项目[^15]。 13. **GitLab**: 代码版本控制系统,用于版本控制和协作开发。 - 版本控制和CI/CD[^16]。 14. **Docker**: 虚拟化平台,便于部署和运行应用。 - 快速构建可移植的环境[^10]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值