Loading...
墨滴

呵呵哒

2021/05/22  阅读:50  主题:蓝莹

docker容器启动部署

docker 启动部署容器

背景

公司测试服机械硬盘坏了,导致我们的测试环境出了很大问题,无奈之下就需要重新部署一套可以使用的环境,安装环境时踩了不少坑,因此记录一下。这里只是记录怎么部署容器。

环境准备

  • 服务器一台
  • 安装好docker
  • 安装好相关的镜像(例:**docker search mysql** **docker pull mysql**
  • 最好关闭防火墙

我自己docker中下载的镜像如图所示:

启动并且配置MySql

  1. 新建文件夹 mkdir 文件名

  2. 进入刚才创建的文件夹内,然后pwd 查看当前所在的目录

可以看到我自己的文件路径是 /etc/docker/mysql_home,新建文件夹的目的一大作用是将宿主机的目录挂载到容器的目录中,以后修改配置文件直接修改宿主机上的配置文件就好了,不必麻烦的到容器内去下修改。

  1. 启动mysql容器
`docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest`

出现一串数字,并且无报错说明启动正常,在当前目录下查看文件发现自动有配置文件自动生成

  1. docker ps 查看mysql 是否启动成功,端口号显示正常,也可以docker logs 容器ID 查看启动日志

  2. 进入mysql 容器,并且登录

    docker exec -it mysqlserver bash

    mysql -uroot -p

    输入密码登录进去

  3. 开启远程访问权限,这样Navicat就可以连接了

    use mysql;

    select host,user from user;

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

    flush privileges;
  4. ​ 可以新建用户,并且给新建用户赋予权限

    CREATE USER 'username'@'host' IDENTIFIED BY 'password';

    grant select, insert, update, delete on k12platform_dev.* to qingzhou@'%'

    新建用户 给用户轻舟赋予k12platform_dev数据库的所有权限

    新建用户可能无法远程访问所有,修改新建用户的plugin 状态为 mysql_native_password

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  5. 刷新权限

    flush privileges;

启动配置elasticsearch

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch  -e "discovery.type=single-node"  -e "cluster.name=elasticsearch"  -v $PWD/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins  -v $PWD/mydata/elasticsearch/data:/usr/share/elasticsearch/data  -d elasticsearch:latest

启动配置portainer (docker 图形化界面)

docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer 

启动配置nginx

docker run -p 80:80 --name nginx  -v $PWD/mydata/nginx/html:/usr/share/nginx/html  -v $PWD/mydata/nginx/logs:/var/log/nginx  -d nginx

docker container cp nginx:/etc/nginx  $PWD/mydata/nginx/

mv $PWD/mydata/nginx/nginx  $PWD/mydata/nginx/conf

docker stop nginx

docker rm nginx

docker run -p 80:80 -p 443:443 --name nginx  -v  

$PWD/mydata/nginx/html:/usr/share/nginx/html  -v  $PWD/mydata/nginx/logs:/var/log/nginx  -v  $PWD/mydata/nginx/conf:/etc/nginx  -d nginx

启动配置kong konga

  • 创建docker网络

    docker network create kong-net 
  • 启动数据库,这里使用9.6 版本过高可能会在启动Kong Konga 报错

    docker run -d --name kong-database  --network=kong-net  -p 5432:5432  -e "POSTGRES_USER=kong"   -e "POSTGRES_DB=kong"   -e "POSTGRES_PASSWORD=kong"  postgres:9.6
  • 启动一个短暂的容器来准备Kong 的数据库

    docker run --rm  --network=kong-net  -e "KONG_DATABASE=postgres"   -e "KONG_PG_HOST=kong-database"  -e "KONG_PG_PASSWORD=kong"   -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"   kong:latest kong migrations bootstrap 
  • 启动Kong

    docker run -d --name kong  --network=kong-net  -e "KONG_DATABASE=postgres"   -e "KONG_PG_HOST=kong-database"   -e "KONG_PG_PASSWORD=kong"   -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout"   -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout"   -e "KONG_PROXY_ERROR_LOG=/dev/stderr"   -e "KONG_ADMIN_ERROR_LOG=/dev/stderr"   -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl"   -p 8000:8000   -p 8443:8443   -p 0.0.0.0:8001:8001   -p 0.0.0.0:8444:8444   kong:latest 
  • 通过启动一个短暂的容器来准备Konga的数据库

    docker run --rm  --network=kong-net  pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga_db
  • 启动Konga

    docker run -p 1337:1337  --network kong-net  -e "TOKEN_SECRET=bryan"  -e "DB_ADAPTER=postgres"  -e "DB_URI=postgresql://kong:kong@kong-database:5432/konga"  -e "NODE_ENV=development"   --name konga   pantsel/konga

容器自启动

docker update --restart=always 容器Id

呵呵哒

2021/05/22  阅读:50  主题:蓝莹

作者介绍

呵呵哒