Docker 应用部署

一、部署MySQL

拉取mysql镜像

docker pull mysql:5.7

查看MySQL镜像是否下载成功

docker images

3. 创建容器,设置端口映射、目录映射

创建mysql目录
1、创建mysql配置文件目录,使用 -p 创建多级目录

mkdir -p /docker/mysql/conf

2.编写配置文件

vi /docker/mysql/conf/my.conf

[client]
# 端口号
port=3306
 
[mysql]
no-beep
# 配置了 MySQL 客户端的默认字符集
default-character-set=utf8mb4
 
[mysqld]
# 端口号
port=3306
# 数据目录
datadir=/var/lib/mysql
# 设置了 MySQL 服务器的字符集为 UTF-8
character-set-server=utf8mb4
# 设置了 MySQL 服务器的排序规则为 utf8mb4_unicode_ci,通常用于支持国际化和多语言字符的正确排序
collation-server=utf8mb4_unicode_ci
# 用于禁用客户端字符集握手,允许客户端和服务器之间的字符集设置更加灵活
skip-character-set-client-handshake
# 禁用了主机名解析,以提高连接性能
skip-name-resolve
# 默认存储引擎
default-storage-engine=INNODB
# 将 SQL 模式设置为严格
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#  最大连接数
max_connections=1024
# 表缓存
table_open_cache=2000
# 表内存
tmp_table_size=16M
# 线程缓存
thread_cache_size=10
# 设置大小写不敏感
lower_case_table_names=1
 
# myisam设置
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
 
# innodb设置
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=33
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
# 其他设置
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000


启动MySQL

编写脚本 

cd /docker/mysql/

vi startMysql.sh

docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart=always \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

赋权

chmod -R 777 startMysql.sh

启动

./startMysql.sh

查看运行镜像

docker ps

查看日志

docker logs mysql

测试连接 navicat连接

设置开机自启动

docker ps

docker update --restart=always 容器ID

取消开机自动启动

docker update --restart=no 容器ID

修改密码
进入容器

docker exec -it mysql bash

 登录MySQL

mysql -u root -proot

修改密码 

# 修改普通用户,只改一个就好 
SET PASSWORD FOR 'youruser' = PASSWORD('xxxxxxxx'); 
# 修改root用户,改两个 
SET PASSWORD FOR 'root' = PASSWORD('xxxxxxxxx'); 
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('xxxxxxxxx');
 退出MySQL服务

\q

退出容器

exit

重启服务/容器

docker restart mysql

二、部署Tomcat

拉取tomcat镜像

docker pull tomcat:9.0

创建容器,设置端口映射、目录映射

# 在/root目录下创建tomcat目录用于存储tomcat数据信息

mkdir -p /usr/local/tomcat/webapps

docker run -d --name my-tomcat -p 8080:8080 -v ${PWD}/docker_volume/tomcat/webapps:/usr/local/tomcat/webapps tomcat:9.0

- 参数说明:

  - **-p 8080:8080:**将容器的8080端口映射到主机的8080端口

-v ${PWD}/docker_volume/tomcat/webapps:/usr/local/tomcat/webapps

:**将主机中当前目录挂载到容器的webapps

在主机中安装tomcat后访问主机出现404的错误
在这里插入图片描述

 解决办法
  • 出现这个问题的原因是在高版本中webapps文件夹下的文件是空的,会有一个webapps.dist的文件夹
  • 所以,只需要将原来的webapps文件夹删除,把wenapps.dist复制成webapps即可
### 进入容器,注意我之前创建的容器名字就是tomcat,注意替换
docker exec -it my-tomcat bash 

### 进入tomcat目录,有可能进入tomcat后直接就在该目录
cd /usr/local/tomcat/

### 删除webapps
rm -rf webapps

### 将webapps.dist 复制成webapps
cp -r webapps.dist webapps

.5 管理 Tomcat 容器
查看运行中的容器:

docker ps

停止容器:

docker stop my-tomcat

启动已停止的容器:

docker start my-tomcat

删除容器:

docker rm my-tomcat
 

### 三、部署Nginx

拉取nginx镜像

docker pull nginx

3. 创建容器,设置端口映射、目录映射

# 在/root目录下创建nginx目录用于存储nginx数据信息

mkdir ~/nginx

cd ~/nginx

mkdir conf

cd conf

# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容

vim nginx.conf

user  nginx;

worker_processes  1;

error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;


 

events {

    worker_connections  1024;

}


 

http {

    include       /etc/nginx/mime.types;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

}


 

```




 

```shell

docker run -id --name=c_nginx \

-p 80:80 \

-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \

-v $PWD/logs:/var/log/nginx \

-v $PWD/html:/usr/share/nginx/html \

nginx

- 参数说明:

  - **-p 80:80**:将容器的 80端口映射到宿主机的 80 端口。

  - **-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf**:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录

  - **-v $PWD/logs:/var/log/nginx**:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录











 

### 四、部署Redis

1. 搜索redis镜像

```shell

docker search redis

```

2. 拉取redis镜像

```shell

docker pull redis:5.0

```

3. 创建容器,设置端口映射

```shell

docker run -id --name=c_redis -p 6379:6379 redis:5.0

```

4. 使用外部机器连接redis

```shell

./redis-cli.exe -h 192.168.149.135 -p 6379

```








 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐