linux 上Docker-compose配置、部署java服务

Docker配置部署java服务

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
相关推荐
pjx987几秒前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
苏生要努力35 分钟前
第九届御网杯网络安全大赛初赛WP
linux·python·网络安全
多多*38 分钟前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
爱喝酸奶的桃酥41 分钟前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql
若风的雨42 分钟前
【DeepSeek】判断两个 PCIe 设备是否属于**同一个 PCIe 子树
linux
唐僧洗头爱飘柔95271 小时前
【SSM-SSM整合】将Spring、SpringMVC、Mybatis三者进行整合;本文阐述了几个核心原理知识点,附带对应的源码以及描述解析
java·spring·mybatis·springmvc·动态代理·ioc容器·视图控制器
骑牛小道士2 小时前
Java基础 集合框架 Collection接口和抽象类AbstractCollection
java
江畔独步2 小时前
vim中的查找
linux·编辑器·vim
alden_ygq2 小时前
当java进程内存使用超过jvm设置大小会发生什么?
java·开发语言·jvm
triticale2 小时前
【Java】网络编程(Socket)
java·网络·socket