GVKun编程网logo

docker 部署 express 应用(使用docker部署应用)

14

本文将介绍docker部署express应用的详细情况,特别是关于使用docker部署应用的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于24.do

本文将介绍docker 部署 express 应用的详细情况,特别是关于使用docker部署应用的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于24.docker 部署 wordPress、7.7 Docker Stack部署Wordpress、docker (部署常见应用):docker 部署 redis、Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库的知识。

本文目录一览:

docker 部署 express 应用(使用docker部署应用)

docker 部署 express 应用(使用docker部署应用)

1、拷贝 express 应用目录拷到服务器某个目录,如 /home/leyi/front_app_docker

2、新建一个 pm2 的配置文件 preocess.json, 配置如下:

{
  "apps" : [{
    "name" : "appName",    //应用名称
    "script": "./bin/www", //程序入口
    "cwd": "./",           //根目录
    "watch":[
      "bin",
      "public",
      "routes",
      "views"
    ],//需要监控的目录
    "error_file":"./logs/app-err.log",//错误输出日志
    "out_file":"./logs/app-out.log",  //日志
    "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
  }]
}

3、新建 Dockerfile 文件,配置如下:

# 依赖pm2镜像
FROM keymetrics/pm2:latest-alpine 

# Bundle APP files
RUN mkdir -p /home/front_app_dir
WORKDIR /home/front_app_dir
 
# Bundle app source
COPY . /home/front_app_dir
RUN npm install

# Install app dependencies
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install --production

# Show current folder structure in logs
RUN ls -al -R

EXPOSE 3000 
CMD [ "pm2-runtime", "start", "process.json" ]

4、构建镜像 docker build -t appName .

5、docker run -d -p 8888:3000 镜像 id

6、docker ps 查看已启动的容器 docker images -a 列出所有镜像

24.docker 部署 wordPress

24.docker 部署 wordPress

1. 拉取远程 MysqL 和 wordpress 镜像 并 启动起来 使用 

  docker pull MysqL:5.7.27

  docker pull wordpress

2. 创建MysqL 的 container  具体创建容器时的参数可以访问 https://hub.docker.com/_/mysql

  不需要 端口映射 因为 不需要外部访问

  docker run -d --name MysqL -v MysqL-data:/var/lib/MysqL -e MysqL_ROOT_PASSWORD=root  -e MysqL_DATABASE=wordpress MysqL:5.7.27

  

3. 创建 wordpress 的 container  具体创建容器时的参数可以访问 https://hub.docker.com/_/wordpress

  docker run -d -e wordpress_DB_HOST=MysqL:3306 --link MysqL -p 8888:80 wordpress

  浏览器访问 ip:8888 即可

遇到的问题

  如果 docker log MysqL 出现

  [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800

  1 . sudo find / -name MysqL-data

  

  2 . sudo rm -rf  /var/lib/docker/volumes/MysqL-data/_data/*

  即可

<style></style> <style></style>

7.7 Docker Stack部署Wordpress

7.7 Docker Stack部署Wordpress

docker-compose.yml相关字段

  • ENTRYPOINT_MODE 有vip模式和dnssr模式,vip模式就是使用多个容器统一的虚拟ip,dnsrr就是使用真实的IP,然后轮询ip,默认使用vip模式
  • MODE 一种是global、一种是replicated,前者不支持横向扩展,后者支持。
  • PLACEMENT 指定容器部署的节点、操作系统等等。
  • RESOURCES 主要是做一些CPU、内存等资源的限制
  • RESTART_POLICY 用于设定容器自动重启的条件
  • update_config 用于更新时候的配置

使用docker-compose.yml在swarm上部署

version: ''3''
services:
  web:
    image: wordpress
    ports:
      - 8080:80
    depends_on:
      - mysql
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_PASSWORD: root
    networks:
      - wordpress-overlay
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 1
        delay: 10s
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - wordpress-overlay
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == manager
volumes:
  mysql-data:
networks:
  wordpress-overlay:
    driver: overlay

配置部署

docker stack deploy -c docker-compose.yml wordpress

查看分布

[vagrant@swarm-manager wordpress-overlay]$ docker stack services wordpress
ID NAME MODE REPLICAS IMAGE PORTS
gzhzyuo71ycz wordpress_web replicated 3/3 wordpress:latest *:8080->80/tcp
v2lsqkq0sjr3 wordpress_mysql global 1/1 mysql:5.7

使用如下三个链接都是可以访问的

http://192.168.205.10:8080
http://192.168.205.11:8080
http://192.168.205.12:8080

销毁stack

docker stack rm wordpress

docker (部署常见应用):docker 部署 redis

docker (部署常见应用):docker 部署 redis

上节回顾:docker (部署常见应用):docker 部署 mysql

docker 部署 redis:4.0

# 下载镜像
docker pull redis:4.0

# 查看下载镜像
docker images|grep redis

# 启动镜像

  docker run --name my-redis -p 16379:6379 -v /usr/local/workspace/redis/data:/data -d redis:4.0 redis-server --appendonly yes

命令说明:

--name my-redis                                 启动后容器名为 my-redis

-p 16379:3306                                  将容器的 3306 端口映射到主机的 16379 端口

-v  /usr/local/workspace/redis/data:/data                      将主机    /usr/local/workspace/redis/data  目录挂载到容器的 /data

redis-server --appendonly yes                        在容器执行 redis-server 启动命令,并打开 redis 持久化配置

 

查看容器启动情况

[root@k8s-master docker]# docker ps|grep redis
f9eb2360ed36        redis:4.0           "docker-entrypoint.s??   5 minutes ago       Up 5 minutes        0.0.0.0:16379->6379/tcp              my-redis

 

进入 redis 容器

# 进入redis容器
docker exec -it f9eb2360ed36 bash

# 找到redis执行脚本
root@f9eb2360ed36:/usr/local/bin# cd /usr/local/bin/

root@f9eb2360ed36:/usr/local/bin# ls -l
total 24528
-rwxrwxr-x 1 root root      374 Jun 11 06:46 docker-entrypoint.sh
-rwxr-xr-x 1 root staff 1286720 May 24  2017 gosu
-rwxr-xr-x 1 root staff 2628640 Jun 11 06:48 redis-benchmark
-rwxr-xr-x 1 root staff 6121232 Jun 11 06:48 redis-check-aof
-rwxr-xr-x 1 root staff 6121232 Jun 11 06:48 redis-check-rdb
-rwxr-xr-x 1 root staff 2820088 Jun 11 06:48 redis-cli
lrwxrwxrwx 1 root staff      12 Jun 11 06:48 redis-sentinel -> redis-server
-rwxr-xr-x 1 root staff 6121232 Jun 11 06:48 redis-server

# 执行redis-cli命令连接到redis中
root@f9eb2360ed36:/usr/local/bin# ./redis-cli 

# 展示redis信息 
127.0.0.1:6379> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
redis_git_dirty:0

 

 

感谢支持。感谢观看

 

Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库

Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库

MySQL 部署   

    拉取 mysql 镜像    docker pull centos/mysql-57-centos7

    创建 MySQL 容器    docker run -di --name=mysql01 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=320512 centos/mysql-57-centos7

    -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
    -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是 root 用户的登录密码

Tomcat 部署

    拉取镜像 docker pull tomcat:7-jre7

    创建容器 创建容器 -p 表示地址映射

    docker run ‐di ‐‐name=mytomcat ‐p 9000:8080

    ‐v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7‐jre7

Nginx 部署

    拉取镜像    docker pull nginx

    创建容器    docker run ‐di ‐‐name=mynginx ‐p 80:80 nginx

Redis 部署

    拉取镜像    docker pull redis

    创建容器    docker run ‐di ‐‐name=myredis ‐p 6379:6379 redis

 

 

迁移与备份

    容器保存为镜像

    我们可以通过以下命令将容器保存为镜像

    docker commit 容器名称 镜像名称

镜像备份

    我们可以通过以下命令将镜像保存为 tar 文件

    docker save -o tar 文件名称 镜像名称

恢复镜像

    docker load -i tar 文件名称

Dockerfile

    Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。

    1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;

    2、对于测试人员:可以直接拿开发时所构建的镜像或者通过 Dockerfile 文件构建一个新的镜像开始工作了;

    3、对于运维人员:在部署时,可以实现应用的无缝移植。

常用命令

命令 作用
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量 (可以写多条)
RUN command 是 Dockerfile 的核心部分 (可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和 ADD 相似,但是如果有压缩文件并不能解压
WORKDIR path_dir 设置工作目录

使用脚本创建镜像

步骤:
(1)创建目录

    mkdir –p /usr/local/dockerjdk8

(2)下载 jdk-8u171-linux-x64.tar.gz 并上传到服务器(虚拟机)中的 /usr/local/dockerjdk8 目录

(3)创建文件 Dockerfile vi Dockerfile

#依赖镜像名称和 ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径 jar, 把 java 添加到容器中
ADD jdk‐8u171‐linux‐x64.tar.gz /usr/local/java/
#配置 java 环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH
$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

(4)执行命令构建镜像(注意后边的空格和点,不能省略)

docker build ‐t=''jdk1.8'' .

参看镜像是否建立完成

docker images

 

Docker 私有仓库

私有仓库搭建与配置

(1)拉取私有仓库镜像(此步省略)

    docker pull registry

(2)启动私有仓库容器

    docker run ‐di ‐‐name=registry ‐p 5000:5000 registry

  (3)    打开浏览器输入地址 http://ip:5000/v2/_catalog,看到 {"repositories":[]} 表示私有仓库搭建成功并且内容为空。

  (4)    修改 daemon.json    vi /etc/docker/daemon.json

            添加以下内容,保存退出,这是为了让 docker 信任私有仓库地址 {"insecure-registries":["ip:5000"]}

重启 docker 服务

    systemctl restart docker

 

镜像上传到私有仓库

    标记此镜像为私有仓库的镜像    docker tag jdk1.8 ip:5000/jdk1.8    

再次启动私服容器

    docker start registry

上传标记的镜像

    docker push ip:5000/jdk1.8

今天关于docker 部署 express 应用使用docker部署应用的介绍到此结束,谢谢您的阅读,有关24.docker 部署 wordPress、7.7 Docker Stack部署Wordpress、docker (部署常见应用):docker 部署 redis、Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库等更多相关知识的信息可以在本站进行查询。

本文标签: