Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

增加了nacos #2

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS

用DBeaver测试一下

![image-20230706140116188](https://github.com/nanshaws/docker-everything/blob/main/img/image-20230706140116188.png)
![image-20230706140116188](../img/image-20230706140116188.png)
87 changes: 87 additions & 0 deletions docker完美启动任何容器/docker启动nacos(完美过程).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# docker启动nacos

## 第一步,拉镜像

```dockerfile
docker pull nacos
```

## 第二步,创建完美nacos容器

```bash
1.先简单启动一个简易的nacos容器
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server
```

访问看看

http://localhost:8848/nacos/

![image-20230724161458679](./../img/image-20230724161458679.png)

我这个直接就可以进去了。但是别急

```bash
2.复制配置文件,在宿主机上运行这段代码
docker cp nacos:/home/nacos/conf /root/nacos/

3.关闭一开始创建的容器
docker stop nacos

4.docker run -d --name nacos1 -p 8848:8848 -v /root/nacos:/home/nacos/conf -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server

5.这样就创建了一个完整的nacos,配置文件在宿主机的/root/nacos下面
```



## 第三步 检验

1.修改宿主机的nacos配置文件

![image-20230724163008862](./../img/image-20230724163008862.png)

2.重启一下docker的nacos,康康效果

结果肯定是看不到的,哈哈哈,因为端口号只开放了8848

![image-20230724163616069](./../img/image-20230724163616069.png)

3.重新创建一个,开放8849

提前把之前的都删了

```bash
docker run -d --name nacos1 -p 8849:8849 -v /root/nacos:/home/nacos/conf -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server
```

4.浏览器检查,因为我改了配置文件,端口也开放了,浏览器没问题的话就ok了

![image-20230724163905510](./../img/image-20230724163905510.png)

## 注意新版nacos2版本会开放两个端口号

当nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成。

| 端口 | 与主端口的偏移量 | 描述 |
| ---- | ---------------- | ---------------------------------------------------------- |
| 9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
| 9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |

所以,新版的要开放两个端口,默认情况下是8848和9848

先把配置文件进行修改,改成8848,配置文件在/root/nacos/application.properties

删除原有的nacos容器。



![image-20240205114525312](./../img/image-20240205114525312.png)

所以命令如下:

```
docker run -d --name nacos1 -p 8848:8848 -p 9848:9848 -v /root/nacos:/home/nacos/conf -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server
```

![image-20240205114815268](./../img/image-20240205114815268.png)
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,3 @@ Commercial support is available at
</body>
</html>
```

![image-20230706151616341](C:\Users\cao'yang'lin\AppData\Roaming\Typora\typora-user-images\image-20230706151616341.png)
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ docker run -d -p 6379:6379 --name myredis -v /root/redis/conf/redis.conf :/etc/r

这里用的是redis桌面版

![image-20230706105929291](https://github.com/nanshaws/docker-everything/blob/main/img/image-20230706105929291.png)
![image-20230706105929291](../img/image-20230706105929291.png)

![image-2001](https://github.com/nanshaws/docker-everything/blob/main/img/image-20230706110005970.png)
![image-2001](../img/image-20230706110005970.png)

成功!!!!!!
219 changes: 219 additions & 0 deletions docker完美启动任何容器/docker完美制作Compose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
# docker制作compose

## 第一步,先了解Compose是什么?

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

Compose有两个重要的概念

1.项目 :由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义

2.服务 :一个应用的容器

官方文档的解释:

```bash
Docker Compose is a tool that was developed to help define and share multi-container applications. With Compose, we can create a YAML file to define the services and with a single command, can spin everything up or tear it all down.

The big advantage of using Compose is you can define your application stack in a file, keep it at the root of your project repo (it’s now version controlled), and easily enable someone else to contribute to your project. Someone would only need to clone your repo and start the compose app. In fact, you might see quite a few projects on GitHub/GitLab doing exactly this now.
```

## 第二步,docker compose 安装与卸载

```bash
If you installed Docker Desktop for Windows, Mac, or Linux you already have Docker Compose! Play-with-Docker instances already have Docker Compose installed as well.
```

如果你安装了windows桌面版的话,就已经自带了Docker Compose

如果不是使用windows桌面版的话,[Install the Compose plugin | Docker Documentation](https://docs.docker.com/compose/install/linux/),这个网址会教你如何安装

## 第三步,Use Docker Compose

```bash
1.查看是否成功安装docker compose
docker compose version
```

![image-20230725102257911](./../img/image-20230725102257911.png)

```bash
At the root of the /getting-started/app folder, create a file named docker-compose.yml.
在文件夹的跟目录创建名字叫docker-compose.yml这个的文件
```

![image-20230725102608512](./../img/image-20230725102608512.png)

```bash
services:
```

先在文件中定义好服务

现在我们基于这个框架,来实现我们的docker Compose

```bash
docker run -dp 127.0.0.1:3000:3000 \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=secret \
-e MYSQL_DB=todos \
node:18-alpine \
sh -c "yarn install && yarn run dev"
```

这只是的样式,就是说不用你打,我们只是照着这个写docker compose

1.首先,让我们定义容器的服务条目和映像。我们可以为服务选择任何名称。 该名称将自动成为网络别名,这在定义我们的 MySQL 服务时很有用。

```bash
services:
app:
image: node:18-alpine
```

2.设置我们的命令,如同上面样式的sh -c "yarn install && yarn run dev"

```bash
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
```

3.设置端口号 ,如同上面样式的 127.0.0.1:3000:3000

```yml
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
```

4.接下来就是设置工作目录和挂载目录

```yml
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
```

就是当前目录和容器里面的工作目录挂载

5.Finally, we need to migrate the environment variable definitions using the key.`environment`

就是设置容器里面的环境,比如说mysql数据库就需要user ,password,这方面不熟的可以去看我github的文档[docker-everything/docker完美启动任何容器 at master · nanshaws/docker-everything (github.com)](https://github.com/nanshaws/docker-everything/tree/master/docker完美启动任何容器)

```yml
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
```

编写项目第一部分算是完成了,第二部分就是Define the MySQL service,再次强调这个项目是一下子创建两个容器,一个是node,一个是mysql

样式:

```bash
docker run -d \
--network todo-app --network-alias mysql \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=todos \
mysql:8.0
```

根据样式开始编写代码

```yml
services:
app:
# The app service definition //这里就是之前定义好的
mysql:
image: mysql:8.0
```

这里定义了一下mysql的镜像

在设置挂载

```yml
services:
app:
# The app service definition
mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos

volumes:
todo-mysql-data:
```

完整代码如下:

```yml
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos

mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos

volumes:
todo-mysql-data:
```

## 第四步,开始运行

```bash
docker compose up -d
```

![image-20230725110927196](./../img/image-20230725110927196.png)

成功,如果app-1出现了

![image-20230725111314822](./../img/image-20230725111314822.png)

这个问题,很明显是缺这个package.json的这个文件,就是挂载的/app缺少这个文件,这个问题很常见,如果是看过我用过docker完美启动tomcat的话,就知道怎么做了,这个问题的原因就是挂载的时候把原来的文件清空了,因为它是以宿主机为挂载目录的,办法就是先启动一个什么都没有的容器,然后复制过去。
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
```dockerfile
from openjava:8
EXPOSE 8080
ADD demo-0.0.1-SNAPSHOT.jar app.jar
run bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
```

Loading