赞
踩
1 )mysql 的部署
docker pull mysql
docker run --name mysql_c -p 3306:3306 -v /root/mysql/conf.d:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
mkdir /root/mysql/conf.d /root/mysql/data
来创建两个目录2 )web的部署
docker run -itd --name goweb1 --link mysql_c:mysql -p 8080:8080 -v /root/wwwroot/:/root centos
--link
之后,会在 /etc/host 生成mysql对应的别名配置,就可以连接到mysql了docker exec -it goweb1 /bin/bash
这里goweb1是容器,可以用自己的chmode -R goweb1
这里找到对应的目录修改执行权限, 这里goweb1是目录nohup ./goweb &
这里 goweb是可执行程序3 )nginx的部署
goweb.conf
upstream backend { ip_hash; server goweb1:8080; # 这里是 goweb1 容器服务的host别名 } server { listen 80; server_name goweb.xxxx.com; # 你的域名地址 location / { # 设置主机头和客户端真实地址,以便服务器获取客户端真实IP # 禁用缓存 proxy_buffering off; # 反向代理的地址 proxy_pass http://backend; } # error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
启动nginx映射端口,配置映射目录,连接web服务
docker run -itd --name nginxweb -p 80:80 --link goweb1:centos -v /root/nginx/conf.d/:/etc/nginx/conf.d nginx
检查 host配置
cat /etc/hosts
ping 域名 成功
以上是纯docker命令部署,也可通过 Dockerfile来配置部署goweb应用程序
不管是原生docker命令部署,还是 Dockerfile部署,其实都比较麻烦
1 )安装 docker compose
rm -rf /etc/yum.repos.d/*
touch /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
yum install docker-compose-plugin
2 )配置 docker-compose.yml
version: "3" services: # 定义容器服务 mysql_c: # 当前容器配置 image: mysql container_name: mysql_c # 可以不写,和配置名保持一致 environment: MYSQL_ROOT_PASSWORD: 123456 restart: always ports: - 3306:3306 volumes: - /root/mysql/conf.d:/etc/mysql/conf.d - /root/mysql/data:/var/lib/mysql goweb1: image: gowebimg # 这个golangweb的镜像需要提前准备好 build: context: ./ dockerfile: Dockerfile # container_name: goweb1 restart: always ports: - 8080:8080 depends_on: # 表示 mysql_c 容器创建完成后,再去创建 goweb1 容器 - mysql_c nginx: image: nginx container_name: nginx restart: always ports: - 80:80 depends_on: - goweb1 volumes: - /root/nginx/conf.d/:/etc/nginx/conf.d
docker compose convert
docker compose up
docker compose up -d
docker ps / docker compose ps
docker compose exec 服务名 /bin/bash
docker compose exec goweb1 /bin/bash
docker compose restart goweb1
docker compose restart goweb1
3 )解决启动顺序问题导致的数据库访问不通
改写 compose 文件
goweb1:
image: gowebimg # 这个golangweb的镜像需要提前准备好
build:
context: ./
dockerfile: Dockerfile
# container_name: goweb1
restart: always
ports:
- 8080:8080
depends_on: # 表示 mysql_c 容器创建完成后,再去创建 goweb1 容器
- mysql_c
command: ["./wait-for-it.sh", "mysql_c:3306", '--', './goweb'] # goweb是编译后的可执行文件
docker compose build
可编译/重新编译服务
–force-rm
:总是删除构建过程中的临时容器。–no-cache
:镜像构建过程中不使用 cache。–pull
:始终先尝试通过 pull 来获取最新版本的镜像docker compose logs
可查看操作日志docker compose ps
可查看当前主机容器信息,类似 docker psdocker compose start
启动容器docker compose restart
重启容器docker compose stop
停止容器 后面不加容器,则全部停止docker compose rm
删除容器 不加容器,删除停止状态的容器
-f
强制删除docker compose exec
进入容器docker compose version
查看版本1 )方案1:基于命令
docker compose up --scale='goweb1=3' -d
# ports:
# - 8080:8080
docker compose ps
可看见3台 goweb1 服务2 )方案2: 基于docker-compose.yml文件
goweb1: build: context: ./ dockerfile: Dockerfile restart: always deploy: replicas: 3 #副本数量 resources: #资源 limits: #配置cpu cpus: "0.5" # 设置该容器最多只能使用 50% 的 CPU memory: 500M # 设置该容器最多只能使用 500M内存 restart_policy: #定义容器重启策略, 用于代替 restart 参数 condition: on-failure #只有当容器内部应用程序出现问题才会重启 depends_on: - mysql_c command: ["./wait-for-it.sh","mysql_c:3306","--","./goweb"]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。