
呵呵哒
V1
2021/05/22阅读:69主题:蓝莹
docker容器启动部署
docker 启动部署容器
背景
公司测试服机械硬盘坏了,导致我们的测试环境出了很大问题,无奈之下就需要重新部署一套可以使用的环境,安装环境时踩了不少坑,因此记录一下。这里只是记录怎么部署容器。
环境准备
-
服务器一台 -
安装好docker -
安装好相关的镜像(例: **docker search mysql**
**docker pull mysql**
) -
最好关闭防火墙
我自己docker中下载的镜像如图所示:

启动并且配置MySql
-
新建文件夹 mkdir 文件名
-
进入刚才创建的文件夹内,然后pwd 查看当前所在的目录

可以看到我自己的文件路径是 /etc/docker/mysql_home
,新建文件夹的目的一大作用是将宿主机的目录挂载到容器的目录中,以后修改配置文件直接修改宿主机上的配置文件就好了,不必麻烦的到容器内去下修改。
-
启动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`
出现一串数字,并且无报错说明启动正常,在当前目录下查看文件发现自动有配置文件自动生成

-
docker ps 查看mysql 是否启动成功,端口号显示正常,也可以docker logs 容器ID 查看启动日志
-
进入mysql 容器,并且登录
docker exec -it mysqlserver bash
mysql -uroot -p输入密码登录进去
-
开启远程访问权限,这样Navicat就可以连接了
use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges; -
可以新建用户,并且给新建用户赋予权限
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';
-
刷新权限
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
作者介绍

呵呵哒
V1