Docker配置部署java服务
-
- 1、创建新用户
- 2、创建文件
- 3、nginx
-
- [3.1 docker运行 nginx](#3.1 docker运行 nginx)
- [3.2 docker-compose运行 nginx](#3.2 docker-compose运行 nginx)
- [3.2.1 运行环境挂载文件配置](#3.2.1 运行环境挂载文件配置)
- [3.2.2 docker-compose.yml文件编辑](#3.2.2 docker-compose.yml文件编辑)
- 4、redis
-
- [4.1 docker运行redis](#4.1 docker运行redis)
- [4.2 docker-compose运行 mysql](#4.2 docker-compose运行 mysql)
- [4.2.1 运行环境挂载文件配置](#4.2.1 运行环境挂载文件配置)
- [4.2.2 docker-compose.yml文件编辑](#4.2.2 docker-compose.yml文件编辑)
1、创建新用户
1.1、使用 useradd 命令创建新用户
在 Linux 系统中,我们可以使用 useradd 命令来创建新用户。打开你的终端,键入下面的命令:
bash
sudo useradd -m 新用户名
这里,-m
选项会为新用户在 /home
目录下创建一个新的家目录,而 新用户名 就是你想要创建的新用户的用户名。
接下来,你可能会希望给新用户设置一个密码,你可以使用 passwd 命令:
bash
sudo passwd 新用户名
然后,根据提示输入新密码两次。
1.2、使用 adduser 命令创建新用户
在某些基于 Debian 的 Linux 发行版中,你可能会找到一个叫做 adduser 的命令。它实际上是 useradd 的一个友好版本,更方便你进行交互式操作。
bash
sudo adduser 新用户名
执行这个命令后,系统会自动引导你完成创建新用户的过程,包括设置密码、填写用户全名、房间号码、工作电话、家庭电话和其他信息(这些额外信息是可选的,如果不需要,可以直接按回车跳过)。
1.3用户授权
为了操作顺利需要给用户授权管理员
bash
sudo vim /etc/sudoers
编辑sudoers文件,找到一下内容,
bash
root ALL=(ALL) ALL
在后面加上以下内容
bash
用户名 ALL=(ALL) NOPASSWD:ALL
1.3用户组授权
用户授权了管理员之后可能还有些权限功能不足的地方,一下以docker举例
例:在执行docker命令的时候依旧权限不足
所有查看用户组
bash
cat /etc/group
找到docker所属的用户组
把已有的用户添加到docker用户组
bash
usermod -G {groupname} {username}
添加成功之后就可以使用docker命令了
2、创建文件
创建部署所需相关文件夹和文件
2.1、创建文件夹
bash
mkdir 文件夹名
2.2、创建文件
bash
touch 文件名.文件类型
3、nginx
3.1 docker运行 nginx
3.1.1、拉取镜像
bash
docker pull nginx:latest
异常:error pulling image configuration: download failed ******
点击处理
3.1.2、容器运行
bash
docker run --name nginx-test -p 20240:80 -d nginx
- --name nginx-test:容器名称。
- -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
- -d nginx: 设置容器在在后台一直运行。
3.2 docker-compose运行 nginx
3.2.1 运行环境挂载文件配置
将正在运行的nginx中的配置文件复制到本机上
bash
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
# 将容器中的日志文件夹复制到宿主机
docker cp nginx:/var/log/nginx /home/nginx/logs/
3.2.2 docker-compose.yml文件编辑
注意:
挂载点文件路径,和上一步配置的要对应上
bash
version: "3"
services:
web:
#定义主机名
container_name: lrnginx
#使用的镜像
image: nginx:latest
#容器的映射端口
ports:
- 20240:80
#定义挂载点
volumes:
- ./html:/usr/share/nginx/html
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf.d:/etc/nginx/conf.d
- ./logs:/var/log/nginx
#docker 重启后,容器自启动
restart: always
运行命令
bash
docker-compose up -d
**附加
*进入容器内部查看nginx配置文件
bash
docker exec -it nginx-test bash
*查看容器中nginx配置文件
bash
cat /etc/nginx/nginx.conf
4、redis
4.1 docker运行redis
4.1.1、拉取镜像
bash
docker pull mysql:8.0
4.1.2、容器运行
bash
docker run --name mysql-test -p 20241:3306 -d mysql:8.0
4.2 docker-compose运行 mysql
4.2.1 运行环境挂载文件配置
将正在运行的mysql中的配置文件复制到本机上
bash
# 将容器mysql 文件复制到宿主机
docker cp mysql-test:/etc/mysql /home/lirong/mysql/
容器中mysql文件这样的
bash
├── conf.d
├── my.cnf
└── my.cnf.fallback
将文件复制过来调整一下,调整以后文件夹是这样的
bash
├── conf.d
├── conf
│ └── my.cnf
│ └── my.cnf.fallback
根据个人习惯调整
4.2.2 docker-compose.yml文件编辑
bash
version: '3'
services:
mysql:
restart: always
privileged: true
image: mysql:8.0
container_name: lrmysql
volumes:
- ./data:/var/lib/mysql
- ./conf.d:/etc/mysql/conf.d
- ./conf/my.cnf:/etc/mysql/my.cnf
- ./logs:/var/log/mysql
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
environment:
MYSQL_ROOT_PASSWORD: "***"
MYSQL_USER: "**"
MYSQL_PASSWORD: "**"
MYSQL_INITDB_SKIP_TZINFO: "Asia/Shanghai"
ports:
- 20241:3306
network_mode: "bridge"
运行命令
bash
docker-compose up -d