docker config
calcium_oxide Lv3

docker基础内容

docker镜像制作

为了加速镜像拉取等操作,一般要配置国内的镜像加速器,这里选择阿里云镜像加速器

1
2
3
4
5
6
7
8
9
#在Docker Engine中配置:
{
"debug": true,
"registry-mirrors": [
"https://itobyt5q.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
],
"experimental": false
}

常用的docker指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查看镜像
docker images
#删除镜像
docker image rm [镜像id]
#查看容器
docker container ls --all
#查看运行着的容器
docker ps
#停止容器运行
docker kill [容器id]
#启动容器
docker start [容器id]
#删除容器
docker rm [容器id]
#进入运行着的容器
docker exec -it [容器id] bash

配置mysql

  • 拉取官方镜像
1
docker pull mysql:8.0.0
  • 运行容器
1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 -v /home/docker/mysql/data:/var/lib/mysql --name mysql mysql:8.0.0
  • 检查容器是否运行成功
1
docker ps
  • 进入容器
1
docker exec -it mysql bash

如果容器运行正常,但无法访问到mysql:

  1. 防火墙阻拦
1
2
3
4
5
6
# 开放端口:
$ systemctl status firewalld
$ firewall-cmd --zone=public --add-port=3306/tcp -permanent
$ firewall-cmd --reload
# 关闭防火墙:
$ sudo systemctl stop firewalld
  1. 未开启mysql远程访问权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Mysql为了安全考虑,初始的时候并没有开启Root用户(解释:mysql的root用户和我们云服务器的root用户是两个不同的,分开的)的远程访问权限,Root(解释:这里是指mysql的root用户,而不是云服务器的root用户)只能本地localhost,127.0.0.1访问

# mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)

mysql> use mysql;
Database changed

mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> grant all privileges on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)

python代码测试mysql是否配置成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pymysql
conn = pymysql.Connect(
host='127.0.0.1',
user='root',
password='Jiangshu123',
database='customer',
port=8083,
charset='utf8',
autocommit = False
)

print("ok")

cur = conn.cursor()
cur.execute("show databases")
print(cur.fetchall())

Vue前端项目打包

1
2
3
4
5
一般情况下执行npm run build进行打包
特殊情况下执行npm run build:prod才能正常打包

此外还有一个问题,打包完成添加到SprringBoot项目启动运行,静态文件抛404,最后发现还需要对vue.config.js修改。
添加 publicPath: './'

前端项目打包后保存在dist目录下,然后将dist目录下的所有文件目录拷贝到spring-boot后端项目的resourse>static目录下。

以上配置完成之后先在本地运行,然后通过maven进行打包

1
maven下的Lifecycle下的package

镜像制作

得到打包后的jar包之后就可以制作镜像,首先在jar包相同的目录下新建Dockerfile文件,加入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Docker image for springboot file run
# VERSION 0.0.1
# Author: jeremy
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER jeremy <jeremyCoding@163.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo-01.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

执行docker build -t [镜像名称] . 完成进行制作。

容器间通信

  • Post title:docker config
  • Post author:calcium_oxide
  • Create time:2022-05-31 15:38:44
  • Post link:https://yhg1010.github.io/2022/05/31/docker_config/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.