`
sunbin
  • 浏览: 354195 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mac中创建mysql docker容器、docker中搭建java服务及nginx反向代理

 
阅读更多

github上有一个专门的docker-libary项目,里面有各种各样常用的docker镜像,可以做为学习的示例,今天研究下其中mysql镜像的用法,国内镜像daocloud.io也能找到mysql的镜像,但根据其参考文档在mac上尝试了数次,将mysql数据库文件存储在mac本机时,启动总是报错,大意是docker容器运行时,容器的当前用户mysql,由于权限不足无法mac本机上创建文件,stackoverflow上有人解决了这个问题,参考其解决方法,重新整理了下Dockerfile文件,内容如下(主要是增加了vim的安装,以方便直接在容器内修改mysql配置文件):

1
2
3
4
5
6
7
8
9
FROM mysql:latest
 
MAINTAINER jimmy.yang <yjmyzz@126.com>
LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest"
RUN apt-get update
RUN apt-get -y install vim
RUN usermod -u 1000 mysql
RUN mkdir -p /var/run/mysqld
RUN chmod -R 777 /var/run/mysqld

将上面这段保存成名为"Dockerfile"的文件,然后在当前目录下,输入:

1
docker build -t "yjmyzz/mysql-osx:latest" .

注意最后有一个点,-t后的内容为image的tag,可以根据需要修改成自己的内容。build完成后,可用docker images ls确认下是否在本机生成了名为yjmyzz/mysql-osx的镜像,接着就可以创建mysql容器了,示例如下:

1
2
3
4
docker run -d -h mysql \
  -v /Users/yjmyzz/data/db/mysql:/var/lib/mysql \
  -p 0.0.0.0:3306:3306 --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 yjmyzz/mysql-osx

上面有几个参数值大家根据需要自行调整:

-v 后面的/Users/yjmyzz/data/db/mysql 为mac本机的目录,用于存放mysql数据库文件(创建前要注意该目录必须为空,且必须是当前登录用户~/下,且要有读写权限)

-p 后面的部分为端口映射

MYSQL_ROOT_PASSWORD=123456为root账号的密码

 

mac上连接验证:

1
mysql -h192.168.99.100 -uroot -p123456 

上面的ip地址,大家换成自己虚拟机default的IP

 

mysql参数调整:

先进入容器

1
docker exec -it mysql sh

然后在容器内

1
vi /etc/mysql/my.cnf

注意:修改完mysql参数后,如果直接在容器内 service mysql restart ,容器就退出了(因为mysql stop完成的瞬间,没有命令在运行,容器生命周期结束),需要在mac机上执行

1
docker start mysql

 

上传镜象

为了以后使用方便,可以将mac版的mysql镜像上传到daocloud.io,命令如下:

1
2
3
docker login daocloud.io
docker tag yjmyzz/mysql-osx daocloud.io/yjmyzz/mysql-osx:latest
docker push daocloud.io/yjmyzz/mysql-osx:latest

提醒:daocloud push上去的镜像,目前未提供删除功能(客服说是以后会提供),一旦上传了,目前就没办法删除了,所以千万不要在镜像里放一些敏感信息。  

参考文章:

1. 官网dockerfile用法 

 

docker学习(6) docker中搭建java服务及nginx反向代理

 

先看下容器规划:

上图中mysql容器的搭建见上篇博客,service1/2为java rest service,创建脚本如下:

1
2
3
4
5
6
7
8
9
10
11
docker run -d -h service1 \
  -v /Users/yjmyzz/data/service:/opt/service \
  --name service1 \
  --link mysql:mysql -p 0.0.0.0:9081:8080 java \
  java -jar opt/service/spring-boot-rest-framework-1.0.0.jar
 
docker run -d -h service2 \
  -v /Users/yjmyzz/data/service:/opt/service \
  --name service2 \
  --link mysql:mysql -p 0.0.0.0:9082:8080 java \
  java -jar opt/service/spring-boot-rest-framework-1.0.0.jar  

注:对外的端口映射可选,因为最后会用nginx转发,暴露出来是为了方便单独测试service1及service2是否正常。

nginx容器的创建脚本如下:

1
2
3
4
5
6
7
8
docker run -d -h nginx1 \
  -v /Users/yjmyzz/data/nginx/html:/usr/share/nginx/html:ro \
  -v /Users/yjmyzz/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /Users/yjmyzz/data/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
  -p 0.0.0.0:9000:80 \
  --link service1:service1 \
  --link service2:service2 \
  --name nginx1 nginx

注:因为nginx1要访问service1/2,所以用了二个link来打通nginx1到service1/2的网络访问,另外有3个-v参数,分别用于映射静态资源、主配置文件、虚拟主机映射文件,最后将80端口映射到mac本机9000端口。

~/data/nginx/conf/nginx.conf参考配置如下:

~/data/nginx/conf/conf.d/default.conf参考配置如下:

参考文章:

docker-nginx镜像使用文档

docker-java镜像使用文档

分享到:
评论

相关推荐

    docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https

    在本文中,我们将详细介绍如何使用 Docker 安装 WordPress,并通过 Nginx 反向代理,绑定域名,配置 HTTPS。 首先,我们需要安装 Docker,若您已经安装了 Docker,可以跳过这一步骤。如果您还没有安装 Docker,可以...

    linux centos jdk,mysql,gitlab,docker,nginx-lua安装手册

    本手册将详细讲解在Linux CentOS系统上安装与配置Java JDK、MySQL数据库、GitLab代码管理工具、Docker容器化平台以及Nginx-Lua模块的过程。 1. **Java JDK安装**: - JDK(Java Development Kit)是Java编程语言的...

    Linux环境下的Docker应用部署详解-MySQL、Nginx与Jar应用程序实例

    内容概要:本文详细介绍了在Linux环境下使用Docker部署多个常见应用程序的方法,主要包括Docker的基本安装流程,以及如何通过Docker容器快速搭建MySQL数据库服务器、配置Nginx反向代理和部署Java应用程序(JAR)。...

    docker-compose构建通用php+mysql+nginx包

    【标题】"docker-compose构建通用...综上所述,这个包提供了一种便捷的方式来创建一个包含PHP后端、MySQL数据库和Nginx反向代理的开发或生产环境,通过Docker Compose实现一键部署和管理,大大提高了开发和运维的效率。

    docker-compos安装mysql、nacos、nginx、redis文件及相关配置

    在这个"docker-compose安装mysql、nacos、nginx、redis文件及相关配置"的主题中,我们将深入探讨如何使用Docker Compose来部署这四个关键的组件:MySQL数据库、Nacos服务发现与配置中心、Nginx反向代理服务器以及...

    Docker如何使用nginx搭建tomcat集群(图文详解)

    这个过程包括创建Docker容器、配置网络、管理卷、配置nginx反向代理等。 标签部分说明本文涉及的关键词包括Docker、nginx、Tomcat集群,这些关键词都分别在标题和描述中提及,它们是本文的核心内容。 部分具体内容...

    使用docker-compose搭建高可用Apollo配置中心

    2. 考虑到负载均衡,可能需要配置额外的网络策略,比如使用Nginx反向代理来分散请求到Configservice和Adminservice集群的不同实例。 3. 数据持久化是必要的,可以使用Docker卷或云存储服务来保存MySQL的数据,防止...

    docker+nginx+redis部署前后端分离项目!!!.doc

    然后,需要部署 MySQL,使用命令 docker search mysql 搜索镜像,docker pull mysql:5.7 拉取镜像,创建容器,设置端口映射和目录映射。 五、Nginx 介绍 Nginx 是一个轻量级的 Web 服务器、反向代理服务器和电子...

    使用Docker 配置 LNMP 环境,使用compose一键部署(持续更新)

    Nginx 作为反向代理和静态内容服务器,MySQL 提供关系型数据库服务,PHP 用于动态内容处理。LNMP 提供了高效的 Web 应用架构,通过 Docker 进行容器化,可以提升部署的便捷性和环境的一致性。 - **Docker 与 Docker...

    Docker部署Django+Mysql+Redis+Gunicorn+Nginx的实现

    主要介绍了Docker 部署 Django+Mysql+Redis+Gunicorn+Nginx,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    docker-laravel:使用docker-compose的Dockerized Gulp,PHP-FPM,MySQL和nginx的Laravel 5

    【标题】:“docker-laravel”项目是为Laravel 5应用程序构建的一个 Docker 化环境,它利用了 docker-compose 来管理Gulp、PHP-FPM、MySQL和nginx等服务。 【描述】:此项目的主要目标是简化Laravel 5开发过程中的...

    使用Docker配置一个真实可用的Web应用

    3. **配置Nginx**:设置反向代理,将请求转发给Flask应用。 4. **配置Flask应用**:编写Flask应用代码并创建相应的Dockerfile。 5. **配置MySQL**:编写MySQL初始化脚本。 6. **配置Docker Compose**:编写docker-...

    Go-使用DockerCompose安装MonocularUI

    3. **nginx**: 作为反向代理服务器,Nginx将HTTP请求路由到Monocular API和UI服务,提供HTTPS支持和基本的安全性。 4. **monocular-db**: 这是MySQL数据库服务,存储Monocular的元数据。在配置中,你可能需要自定义...

    掌上办公服务器部署服务情况1

    掌上办公集群服务器01主要运行的应用服务包括掌上办公nginx代理服务、掌上办公tomcat服务和掌上办公mysql服务。掌上办公集群服务器01还包括一些定时任务,如nginx日志切割、自动判断容器启动和删除30天之前的tomcat...

    metabase-docker-template:使用docker和Nginx部署元数据库的模板

    Nginx作为反向代理服务器,用于接收HTTP请求并将它们转发到Metabase容器。在Docker Compose文件中,Nginx配置应该已经设置好,但如果需要自定义,可以在`nginx/conf.d/default.conf`中进行调整。 5. **访问...

    bitnami-docker-wordpress-nginx:使用NGINX的WordPress Bitnami Docker映像

    "bitnami-docker-wordpress-nginx"结合了Docker的便携性、NGINX的高性能以及WordPress的易用性,为用户提供了一种强大且灵活的解决方案来搭建和管理WordPress站点。无论是个人博客还是企业级项目,这个Bitnami ...

    基于Java+jsp+mysql的宠物市场管理系统.rar

    系统部署可能涉及Tomcat服务器、Nginx反向代理、Docker容器化等技术。 9. **前端技术**:虽然主要标签只提到了Java,但实际项目可能还包含HTML、CSS、JavaScript等前端技术,用于构建用户界面。 总结来说,这个...

    22运用Docker-Stack部署远程卷挂载lnmp网站PPT文档.pptx

    在这个案例中,架构由三个主要部分组成:Nginx作为反向代理和静态文件服务器,PHP处理动态请求,以及MySQL存储数据。每个服务都将在Swarm集群中的不同节点上运行两个实例副本,以实现高可用性。 在配置文件方面,...

Global site tag (gtag.js) - Google Analytics