本文将介绍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部署应用)
- 24.docker 部署 wordPress
- 7.7 Docker Stack部署Wordpress
- docker (部署常见应用):docker 部署 redis
- Docker 04 应用部署与迁移备份 Dockerfile 与 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
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
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 部署 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 私有仓库
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 私有仓库等更多相关知识的信息可以在本站进行查询。
本文标签: