├── README.md ├── docker-entrypoint.sh └── Dockerfile /README.md: -------------------------------------------------------------------------------- 1 | Docker image for old MySQL 5.1 database, based on [official MySQL image](https://github.com/docker-library/mysql) 2 | -------------------------------------------------------------------------------- /docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ ! -d '/var/lib/mysql/mysql' -a "${1%_safe}" = 'mysqld' ]; then 5 | if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" ]; then 6 | echo >&2 'error: database is uninitialized and MYSQL_ROOT_PASSWORD not set' 7 | echo >&2 ' Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?' 8 | exit 1 9 | fi 10 | 11 | mysql_install_db --user=mysql --datadir=/var/lib/mysql 12 | 13 | # These statements _must_ be on individual lines, and _must_ end with 14 | # semicolons (no line breaks or comments are permitted). 15 | # TODO proper SQL escaping on ALL the things D: 16 | TEMP_FILE='/tmp/mysql-first-time.sql' 17 | cat > "$TEMP_FILE" <<-EOSQL 18 | DELETE FROM mysql.user ; 19 | CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ; 20 | GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ; 21 | DROP DATABASE IF EXISTS test ; 22 | EOSQL 23 | 24 | if [ "$MYSQL_DATABASE" ]; then 25 | echo "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE ;" >> "$TEMP_FILE" 26 | fi 27 | 28 | if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then 29 | echo "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$TEMP_FILE" 30 | 31 | if [ "$MYSQL_DATABASE" ]; then 32 | echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'%' ;" >> "$TEMP_FILE" 33 | fi 34 | fi 35 | 36 | echo 'FLUSH PRIVILEGES ;' >> "$TEMP_FILE" 37 | 38 | set -- "$@" --init-file="$TEMP_FILE" 39 | fi 40 | 41 | chown -R mysql:mysql /var/lib/mysql 42 | exec "$@" 43 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | RUN groupadd -r mysql && useradd -r -g mysql mysql 4 | 5 | RUN apt-get update && \ 6 | apt-get install -y curl binutils 7 | 8 | RUN gpg --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5 9 | 10 | RUN locale-gen en_US.UTF-8 &&\ 11 | update-locale 12 | 13 | ENV LANG en_US.UTF-8 14 | 15 | ENV LANGUAGE en_US:en 16 | 17 | ENV LC_ALL en_US.UTF-8 18 | 19 | RUN curl -SL "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz" -o mysql.tar.gz && \ 20 | curl -SL "http://mysql.he.net/Downloads/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz.asc" -o mysql.tar.gz.asc && \ 21 | gpg --verify mysql.tar.gz.asc && \ 22 | mkdir /usr/local/mysql && \ 23 | tar -xzf mysql.tar.gz -C /usr/local/mysql --strip-components=1 && \ 24 | rm mysql.tar.gz* && \ 25 | rm -rf /usr/local/mysql/mysql-test /usr/local/mysql/sql-bench && \ 26 | rm -rf /usr/local/mysql/bin/*-debug /usr/local/mysql/bin/*_embedded && \ 27 | find /usr/local/mysql -type f -name "*.a" -delete && \ 28 | { find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; } && \ 29 | apt-get purge -y --auto-remove binutils && \ 30 | rm -rf /var/lib/apt/lists/* 31 | 32 | ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts 33 | 34 | WORKDIR /usr/local/mysql 35 | 36 | VOLUME /var/lib/mysql 37 | 38 | COPY docker-entrypoint.sh /entrypoint.sh 39 | 40 | ENTRYPOINT ["/entrypoint.sh"] 41 | 42 | EXPOSE 3306 43 | 44 | CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"] 45 | --------------------------------------------------------------------------------