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
相关推荐
一只爱打拳的程序猿3 分钟前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧4 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
颇有几分姿色6 分钟前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器
minDuck6 分钟前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
为将者,自当识天晓地。25 分钟前
c++多线程
java·开发语言
daqinzl33 分钟前
java获取机器ip、mac
java·mac·ip
AndyFrank36 分钟前
mac crontab 不能使用问题简记
linux·运维·macos
ZHOU西口37 分钟前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
激流丶1 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
筱源源1 小时前
Kafka-linux环境部署
linux·kafka