Dockerfile打包部署详细图文教程

 更新时间:2025年03月17日 10:30:04   作者:码农易小航  
这篇文章主要介绍了Dockerfile打包部署的相关资料,并详细解释了从创建Dockerfile到启动容器的每一步过程,文中通过代码介绍的非常详细,需要的朋友可以参考下

Dockerfile打包

先找到打包完的目录下创建一个Dockerfile文件

touch Dockerfile

进去文件内编写

vim Dockerfile

# 基础镜像

FROM openjdk:8

# author

MAINTAINER yxh

# 挂载目录

VOLUME /home/project

# 创建目录

RUN mkdir -p /home/project

# 指定路径

WORKDIR /home/project

# 复制jar文件到路径

COPY medical-gateway.jar /home/project/medical-gateway.jar

# 启动认证服务

ENTRYPOINT ["java","-jar","/home/project/medical-gateway.jar"]

保存并退出

:wq!

构建镜像(my-task -> 取一个镜像名字,构建镜像后面是有一个'.'的)

docker build -t my-task .

启动镜像

docker run -d -p 18080:18080 --name task my-task

-d 容器在后台运行

-p 将宿主机的 8080 端口映射到容器的 8080 端口。

--name 取一个容器名

最后面的my-task指的是刚才打包的镜像名

jar部署

判断是否有openjdk有的话可以跳过

拉取openjdk镜像 如果拉不下来就切换镜像

docker pull openjdk
cd /usr

mkdir project

cd project

将jar包拖入目录中

touch Dockerfile

vim Dockerfile

# 基础镜像

FROM openjdk:8

# author

MAINTAINER yxh

# 挂载目录

VOLUME /home/project

# 创建目录

RUN mkdir -p /home/project

# 指定路径

WORKDIR /home/project

# 复制jar文件到路径

COPY medical-gateway.jar /home/project/medical-gateway.jar

# 启动认证服务

ENTRYPOINT ["java","-jar","/home/project/medical-gateway.jar"]

保存并退出

:wq!

构建镜像

docker build -t my-gateway .

启动镜像

docker run -d -p 18080:18080 --name gateway my-gateway

如果发现端口号被占用

netstat -anp |grep 18080//查看18080端口的占用情况

查看端口号占用进程

lsof -i :18080

关闭进程

kill -9 18080

再次启动镜像

docker run -d -p 18080:18080 --name gateway my-gateway

nginx打包部署

我那vue举例

先通过命令将前端工程打包

vue-cli-service build

打完包有个dist

现在去服务器上

cd /opt

创建nginx目录

mkdir nginx

cd nginx

把dist拉到该目录下

先检查一下是否有nginx镜像

docker pull nginx

创建nginx配置

touch nginx.conf

vim nginx.conf
server {
    listen 80;
    server_name your_name;


    root /usr/share/nginx/html;
    index index.html;


    location / {
        try_files $uri $uri/ /index.html;
    }


    # 处理API请求
    location /prod-api/ {
        #存放jar网关部署的服务器IP和端口号
        proxy_pass http://IP:端口/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

保存并退出

:wq!

创建default.conf

touch default.conf
server {
    listen       80;
    server_name  124.70.138.156;
 
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
 
    #error_page  404              /404.html;
 
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
 
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

保存并退出

:wq!

在该目录下创建Dockerfile

touch Dockerfile

vim Dockerfile

# 使用nginx镜像

FROM nginx

# 作者

MAINTAINER yxh

# 删除nginx 默认配置

RUN rm /etc/nginx/conf.d/default.conf

# 添加我们自己的配置 default.conf 在下面

ADD default.conf /etc/nginx/conf.d/

# 把刚才生成dist文件夹下的文件copy到nginx下面去

COPY dist/ /usr/share/nginx/html/

保存并退出

:wq!

构建镜像

docker build -t my-vue-app .

启动镜像

docker run -d -p 80:80 --name vue-app my-vue-app

快去访问一下你的网站吧

总结

到此这篇关于Dockerfile打包部署的文章就介绍到这了,更多相关Dockerfile打包部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Docker开发python Web 应用

    使用Docker开发python Web 应用

    本文给大家详细讲解了如何使用Docker开发python应用,特别是WEB应用的步骤,Docker本质上提供了非常轻量化的VMs,我们可以使用其创建一个高标准隔离并能大大减少失配的开发和产品环境。
    2016-10-10
  • Docker 教程之私有仓库详解

    Docker 教程之私有仓库详解

    这篇文章主要介绍了Docker 教程之私有仓库详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docker容器内不能联网的6种解决方案

    Docker容器内不能联网的6种解决方案

    今天小编就为大家分享一篇关于Docker容器内不能联网的6种解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Docker安装、创建镜像、加载并运行NodeJS程序的详细过程

    Docker安装、创建镜像、加载并运行NodeJS程序的详细过程

    本文给大家介绍Docker安装、创建镜像、加载并运行NodeJS程序的相关知识,通过示例给大家详细介绍创建一个nodejs程序的docker镜像的方法,需要的朋友跟随小编一起看看吧
    2021-06-06
  • 解决Docker容器时区及时间不同步问题的方法

    解决Docker容器时区及时间不同步问题的方法

    这篇文章主要介绍了解决Docker容器时区及时间不同步问题的方法,有效的解决了Docker容器时间同步问题,有兴趣的可以了解一下。
    2016-12-12
  • 把数据库部署在docker容器内有哪些缺陷

    把数据库部署在docker容器内有哪些缺陷

    这篇文章主要介绍了把数据库部署在docker容器内有哪些缺陷,帮助大家更好的理解和学习docker容器和数据库,感兴趣的朋友可以了解下
    2020-08-08
  • Docker 数据卷,数据卷容器详细介绍

    Docker 数据卷,数据卷容器详细介绍

    这篇文章主要介绍了 Docker 数据卷,数据卷容器详细介绍的相关资料,这里对Docker 数据卷,数据卷容器的感念及相关操作进行了介绍,需要的朋友可以参考下
    2016-11-11
  • 通过docker 部署minio的方法(端口号为9105)

    通过docker 部署minio的方法(端口号为9105)

    通过Docker部署MinIO对象存储服务,并指定API端口为9105,下面给大家分享实现步骤,感兴趣的朋友一起看看吧
    2024-12-12
  • 详解如何获取docker容器(container)的ip地址

    详解如何获取docker容器(container)的ip地址

    这篇文章主要介绍了详解如何获取docker容器(container)的ip地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker部署Django应用的示例

    Docker部署Django应用的示例

    这篇文章主要介绍了Docker部署Django应用的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论