电子商务网站建设方案设计报告,做桌面端还是网站,无锡网站建设网站,移动端手机网站制作0#xff0c;先打包好项目#xff0c;再启动docker
1#xff0c;在Java项目根目录下创建一个名为Dockerfile的文件#xff08;没有扩展名#xff09;#xff0c;并添加以下内容。
# 使用OpenJDK的基础镜像
FROM openjdk:8-jdk-alpine# 设置工作目录
WORKDIR /app# 将项…0先打包好项目再启动docker
1在Java项目根目录下创建一个名为Dockerfile的文件没有扩展名并添加以下内容。
# 使用OpenJDK的基础镜像
FROM openjdk:8-jdk-alpine# 设置工作目录
WORKDIR /app# 将项目中的jar包复制到镜像中并且在镜像中的/app工作目录下重命名为app.jar
COPY target/打好的应用包.jar app.jar# 暴露应用端口
EXPOSE 8080# 启动应用
ENTRYPOINT [java, -jar, /app/app.jar]2打开PowerShell导航到你的项目根目录包含Dockerfile的目录然后运行以下命令来构建Docker镜像注意命令最后的 . 代表在当前目录下的Dockerfile文件 docker build -t 镜像名称 .
3构建完镜像后使用以下命令来运行容器-d表示在后台运行容器-p 8080:8080将容器的8080端口映射到主机的8080端口 docker run -d -p 8080:8080 --name 对外显示的容器名称 镜像名称
4打开浏览器访问http://localhost:8080看是否正常运行以下命令可以查看日志 docker logs 对外显示的容器名称
以上部分还不能访问数据库有几种解决方案我试过之后再更新上来 1将数据库服务也容器化 2修改Docker容器的网络配置 3使用Docker Compose来管理多容器应用
解决方案一 在上方第3步的指令中添加一个–nethost设置网络为共享主机模式这样能访问宿主机的数据库如下
docker run -d -p 8080:8080 --name 对外显示的容器名称 --nethost 镜像名称但意义不大因为数据库要么在其它服务器要么在其它容器中。
解决方案二 为了安全起见容器创建时默认是桥接模式不管容器是否设置了共享主机模式先在PowerShell中从容器ping一下数据库所在ip看是否能通或者用telnet看一下是否能连上3306端口。
docker exec -it 项目所在容器名称 ping 数据库所在容器名称或者IP地址
docker exec -it 项目所在容器名称 telnet 数据库所在容器名称或者IP地址 3306能ping通的话直接在项目的yml文件中设置数据库配置就好 用Navicat连接上数据库添加数据库所在IP地址的用户并给与全部权限 停止容器删除容器重新执行第2和第3步构建镜像和运行容器即可访问数据库了。