Walt 发布的文章

Docker 启动容器时,使用如下命令方式即可。

docker run -it -d -p 5001:80 -p 5101:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=5101 -e ASPNETCORE_Kestrel__Certificates__Default__Password="abcdef" -e ASPNETCORE_Kestrel__Certificates__Default__Path=aaabbb.pfx --name=auth-server auth-server --restart always

错误提示: COPY failed: stat /var/lib/docker/tmp/docker-builder...no such file or directory

具体错误如下:

Step 4/5 : COPY /bin/Release/netcoreapp3.1/publish .
COPY failed: stat /var/lib/docker/tmp/docker-builder255452545/bin/Release/netcoreapp3.1/publish: no such file or directory

解决方案

看到此类错误,需要排查文件或文件夹名称是否有写错,如果一切正确,还需要查看是否配置了.dockerignore文件,并且要COPY的文件夹是否添加到了Ignore列表中,如果有,删除即可。

Docker容器做端口映射报错

docker: Error response from daemon: driver failed programming external connectivity on endpoint ....

解决方法

docker服务启动时定义的自定义链DOCKER被清除
重启即可systemctl restart docker


connect: permission denied

docker: docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock ....

解决方法

修改 var/run/docker.sock的权限属性为666或777可解决。但,每次docker重启后,该权限将会重置,需要重新再次配置。


查看容器的日志

docker logs -f -t --tail 200 auth-server

以配置文件方式、守护态 运行redis ,同时,重启docker会自动启动

docker run -p 6379:6379 --name redis --restart always -v /root/redis/redis01/conf/redis.conf:/etc/redis/redis.conf -v /root/redis/redis01/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

Centos获取ip,无法使用ifconfig

ifconfig这个命令是在net-tools.x86_64这个包里,需要安装该工具,命令:yum install net-tools.x86_64

Docker 进入容器命令

docker exec -it 44fc0f0582d9 /bin/bash

查看容器ip地址:

[root@localhost ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' 1d3d739a0b3b
172.17.0.5
[root@localhost ~]# 

查看Linux版本信息

cat /etc/issue

COPY failed: stat /var/lib/docker/tmp/docker-builder...no such file or directory

错误如下:

Step 4/5 : COPY /bin/Release/netcoreapp3.1/publish .
COPY failed: stat /var/lib/docker/tmp/docker-builder255452545/bin/Release/netcoreapp3.1/publish: no such file or directory

看到此类错误,需要排查文件或文件夹名称是否有写错,如果一切正确,还需要查看是否配置了.dockerignore文件,并且要COPY的文件夹是否添加到了Ignore列表中,如果有,删除即可。

容器无法访问外网问题

默认构建镜像时,使用的是bridge模式,需访问外网,可以指定网络为host

docker build -t ideology-usermanager . --network=host

Docker下Redis常用操作

进入容器:

docker exec -it redis /bin/bash

进入redis操作命令:

redis-cli -h 127.0.0.1 -p 6379

查看所有key

keys *

清空数据

flushall 所有数据库

flushdb 当前库

<Border>
    <Border.Style>
        <Style TargetType="Border">
            <Setter Property="Background" Value="{x:Null}"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Background" Value="White"/>
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect BlurRadius="20" Opacity="0.3" ShadowDepth="0" Color="#19334E"/>
                </Setter.Value>
            </Setter>
        </Style>
    </Border.Style>
    <Image Width="1080" Height="720"  Source="Imgs/01.png" />
</Border>

效果图如下:

带阴影效果的图片.png

背景

初学java,在学习spring时,一步一步安装视频教程进行配置,编码,在最后运行时,却无法访问controller中的请求,提示404。首页可正常访问,因controller中直接指向了一个静态jsp文件,经测试,直接修改url可以正常访问该页面,但经过controller访问却提示404。

HTTP状态 404 - 未找到
类型 状态报告

描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

Apache Tomcat/9.0.36

实现代码

1、pom.xml中已经正确配置了所需的dependency。
2、web.xml配置如下

    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

3、UserController代码:

@Controller
public class UserController {

    @RequestMapping("/quick")
    public String save(){
        System.out.println("Controller save running ...");
        return "success.jsp";
    }
}

4、spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/mvc
              http://www.springframework.org/schema/mvc/spring-mvc.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context.xsd">

    <mvc:annotation-driven/>
    <context:component-scan base-package="info.hnbc.controller"/>
</beans>

分析

在反复测试后,发现根本就没有进入到Controller中,初步估计是根本就没有正确扫描到我们的controller,也就是在ioc容器进行解析我们的UserController时出错。各种折腾后发现在打包过程中,没有jar包,这也就导致ioc容器无法正常加载,从而导致UserController类没有加载打包给tomcat。具体原因还在研究,先介绍解决方法,后续再进行更新。

解决方案

打开Project Structure,选择Artifacts选项卡,在右侧,展开WEB-INF,新建一个名为lib的文件夹,
spring-mvc-study-1.png

之后将对应的库添加到lib下,重新运行即可解决。