Docker+Docker-compose部署项目+Nginx配置域名、证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker+Docker-compose部署项目+Nginx配置域名、证书相关的知识,希望对你有一定的参考价值。

参考技术A Docker 是开源的应用容器引擎。
Docker-compose 是用于定义和运行多容器 Docker 应用程序的工具。
Portainer是一个轻量级的docker环境管理UI。
Nginx是一个高性能的HTTP和反向代理服务器。

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm

设置阿里源

列出docker版本

安装指定版本docker

设置docker自启

启动docker

将可执行权限应用于二进制文件

查看compose版本

启动容器

运行项目脚本 run.sh(./deploy/admin/api),部署api

前端需要在admin文件夹下放置dist和index.html文件

目录结构:

注意需要在cert文件夹下放置证书(.pem和.key文件)

我在windows编写的shell脚本,放在linux服务器中提示 \r命令错误。
实际上在windows中回车键都是\r\n,而在linux里没有这种情况,所以我们需要在linux里删除\r。

docker-compose 一键部署lnmp

docker-compose用处

博客文章中有提到用Dockerfile来构建php、java项目、lnmp项目,但是会一步步部署容器,然后才可以看到,比较繁琐,docker-compose就可以一键部署

介绍

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。?
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

安装

1、下载
https://github.com/docker/compose/releases

技术分享图片

2、[[email protected] tools]# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

运行

1、目录结构
[[email protected] docker-compose]# tree -L 2
.
├── docker-compose.yml
├── mysql
│?? ├── conf
│?? └── data
├── nginx-docker
│?? ├── Dockerfile-nginx
│?? └── nginx.conf
├── php-docker
│?? ├── Dockerfile-php
│?? ├── php-5.6.32.tar.gz
│?? ├── php-fpm.conf
│?? └── php.ini
└── wwwroot
├── 123
├── index.html
├── test.php
├── wordpress
└── wordpress-4.9.4-zh_CN.tar.gz

mysql 使用的是官方镜像装的

技术分享图片

3、cat docker-compose.yml 注意yml格式的编写,必须有空格
version: ‘3‘
services:
php:
hostname: lnmp_php
container_name: lnmp_php
image: 192.168.1.13/library/php:v5.6.32
networks:

  • lnmp
    volumes:
  • ./wwwroot:/data/www

    nginx:
    hostname: nginx
    container_name: nginx_v1
    image: 192.168.1.13/library/nginx:v1.15
    ports:

  • 81:80
    depends_on:
  • php
  • mysql
    networks:
  • lnmp
    volumes:
  • ./wwwroot:/data/www

    mysql:
    hostname: mysql
    container_name: mysql_wordpress
    image: mysql:5.6
    ports:

  • 3306:3306
    networks:
  • lnmp
    volumes:
  • ./mysql/conf/my.cnf:/etc/my.cnf
  • ./mysql/data:/var/lib/mysql

    environment:
    MYSQL_ROOT_PASSWORD: 123456
    MYSQL_DATABASE: wordpress
    MYSQL_USER: user
    MYSQL_PASSWORD: user123

networks:
lnmp:

配置文件讲解

0、depends_on:因为服务启动时,若是php没启动,nginx找不到,所以需要先启动php,mysql,再启动nginx
1、version: ‘3‘:指的docker-compose 的版本,有1,2,3版本
2、services:指的安装哪些服务,lnmp服务
3、hostname:容器的主机名,进入容器的名字
4、container_name:容器的名字,docker ps -a 中的
5、image:引入镜像,若是本地没有,就去官网下载
6、networks:自定义网络,默认是桥接模式,可以用docker images ls 看
7、volumes:相当于bind这样的数据卷挂载,可以使用绝对或者相对路径
8、也可以自己构建镜像
build:
context: ../ 这个是在哪个目录
dockerfile: path/of/Dockerfile 这个是哪个dockerfile
9、ports: 开放端口,比如3306:3306 ,那这样宿主机也可以连接管理
10、environment :mysql参数设置

运行启动

1、前台运行,看是否有报错
docker-compose -f docker-compose.yml up

2、后台运行
docker-compose -f docker-compose.yml up -d

3、如果有报错看日志
docker logs f18c58b39949 -f

维护

1、nginx服务器需要共享需要经常修改的文件,如:nginx.conf、wwwroot
2、php 也要设置wwwroot,不然解析不了
3、mysql:需要共享配置文件、数据库目录

以上是关于Docker+Docker-compose部署项目+Nginx配置域名、证书的主要内容,如果未能解决你的问题,请参考以下文章

Docker-compose部署java项目

基于Docker-Compose 部署前后端分离单体项目(一)

使用Docker-Compose对项目进行部署

使用Docker-Compose对项目进行部署

使用docker-compose部署WordPress项目

我无法部署该项目。 docker-compose 和 nginx 的问题