125 lines
5.4 KiB
Markdown
125 lines
5.4 KiB
Markdown
|
## [MySQL](https://hub.docker.com/_/mysql/)
|
||
|
|
||
|
### 基本信息
|
||
|
[MySQL](https://en.wikipedia.org/wiki/MySQL) 是开源的关系数据库实现。
|
||
|
|
||
|
该仓库位于 https://hub.docker.com/_/mysql/,提供了 MySQL 各个版本的镜像,包括 5.6 系列、5.7 系列等。
|
||
|
|
||
|
### 使用方法
|
||
|
默认会在 `3306` 端口启动数据库。
|
||
|
|
||
|
```
|
||
|
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
|
||
|
```
|
||
|
之后就可以使用其它应用来连接到该容器。
|
||
|
|
||
|
```
|
||
|
$ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
|
||
|
```
|
||
|
或者通过 `mysql`。
|
||
|
|
||
|
```
|
||
|
$ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
|
||
|
```
|
||
|
|
||
|
### Dockerfile
|
||
|
#### 5.6 版本
|
||
|
```
|
||
|
FROM debian:wheezy
|
||
|
|
||
|
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
|
||
|
RUN groupadd -r mysql && useradd -r -g mysql mysql
|
||
|
|
||
|
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
|
||
|
# File::Basename
|
||
|
# File::Copy
|
||
|
# Sys::Hostname
|
||
|
# Data::Dumper
|
||
|
RUN apt-get update && apt-get install -y perl --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||
|
|
||
|
# mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
|
||
|
RUN apt-get update && apt-get install -y libaio1 && rm -rf /var/lib/apt/lists/*
|
||
|
|
||
|
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
|
||
|
RUN gpg --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5
|
||
|
|
||
|
ENV MYSQL_MAJOR 5.6
|
||
|
ENV MYSQL_VERSION 5.6.20
|
||
|
|
||
|
# note: we're pulling the *.asc file from mysql.he.net instead of dev.mysql.com because the official mirror 404s that file for whatever reason - maybe it's at a different path?
|
||
|
RUN apt-get update && apt-get install -y curl --no-install-recommends && rm -rf /var/lib/apt/lists/* \
|
||
|
&& curl -SL "http://dev.mysql.com/get/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz" -o mysql.tar.gz \
|
||
|
&& curl -SL "http://mysql.he.net/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz.asc" -o mysql.tar.gz.asc \
|
||
|
&& apt-get purge -y --auto-remove curl \
|
||
|
&& gpg --verify mysql.tar.gz.asc \
|
||
|
&& mkdir /usr/local/mysql \
|
||
|
&& tar -xzf mysql.tar.gz -C /usr/local/mysql --strip-components=1 \
|
||
|
&& rm mysql.tar.gz* \
|
||
|
&& rm -rf /usr/local/mysql/mysql-test /usr/local/mysql/sql-bench \
|
||
|
&& rm -rf /usr/local/mysql/bin/*-debug /usr/local/mysql/bin/*_embedded \
|
||
|
&& find /usr/local/mysql -type f -name "*.a" -delete \
|
||
|
&& apt-get update && apt-get install -y binutils && rm -rf /var/lib/apt/lists/* \
|
||
|
&& { find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; } \
|
||
|
&& apt-get purge -y --auto-remove binutils
|
||
|
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
|
||
|
|
||
|
WORKDIR /usr/local/mysql
|
||
|
VOLUME /var/lib/mysql
|
||
|
|
||
|
COPY docker-entrypoint.sh /entrypoint.sh
|
||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||
|
|
||
|
EXPOSE 3306
|
||
|
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]
|
||
|
```
|
||
|
|
||
|
#### 5.7 版本
|
||
|
```
|
||
|
FROM debian:wheezy
|
||
|
|
||
|
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
|
||
|
RUN groupadd -r mysql && useradd -r -g mysql mysql
|
||
|
|
||
|
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
|
||
|
# File::Basename
|
||
|
# File::Copy
|
||
|
# Sys::Hostname
|
||
|
# Data::Dumper
|
||
|
RUN apt-get update && apt-get install -y perl --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||
|
|
||
|
# mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
|
||
|
RUN apt-get update && apt-get install -y libaio1 && rm -rf /var/lib/apt/lists/*
|
||
|
|
||
|
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
|
||
|
RUN gpg --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5
|
||
|
|
||
|
ENV MYSQL_MAJOR 5.7
|
||
|
ENV MYSQL_VERSION 5.7.4-m14
|
||
|
|
||
|
# note: we're pulling the *.asc file from mysql.he.net instead of dev.mysql.com because the official mirror 404s that file for whatever reason - maybe it's at a different path?
|
||
|
RUN apt-get update && apt-get install -y curl --no-install-recommends && rm -rf /var/lib/apt/lists/* \
|
||
|
&& curl -SL "http://dev.mysql.com/get/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz" -o mysql.tar.gz \
|
||
|
&& curl -SL "http://mysql.he.net/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION-linux-glibc2.5-x86_64.tar.gz.asc" -o mysql.tar.gz.asc \
|
||
|
&& apt-get purge -y --auto-remove curl \
|
||
|
&& gpg --verify mysql.tar.gz.asc \
|
||
|
&& mkdir /usr/local/mysql \
|
||
|
&& tar -xzf mysql.tar.gz -C /usr/local/mysql --strip-components=1 \
|
||
|
&& rm mysql.tar.gz* \
|
||
|
&& rm -rf /usr/local/mysql/mysql-test /usr/local/mysql/sql-bench \
|
||
|
&& rm -rf /usr/local/mysql/bin/*-debug /usr/local/mysql/bin/*_embedded \
|
||
|
&& find /usr/local/mysql -type f -name "*.a" -delete \
|
||
|
&& apt-get update && apt-get install -y binutils && rm -rf /var/lib/apt/lists/* \
|
||
|
&& { find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; } \
|
||
|
&& apt-get purge -y --auto-remove binutils
|
||
|
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
|
||
|
|
||
|
WORKDIR /usr/local/mysql
|
||
|
VOLUME /var/lib/mysql
|
||
|
|
||
|
COPY docker-entrypoint.sh /entrypoint.sh
|
||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||
|
|
||
|
EXPOSE 3306
|
||
|
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]
|
||
|
```
|