-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
125 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# see: | ||
# - https://docs.github.com/en/actions/publishing-packages/publishing-docker-images#publishing-images-to-github-packages | ||
# - https://github.com/docker/build-push-action/tree/v5.0.0 | ||
|
||
name: Create and publish a Docker image | ||
|
||
on: workflow_dispatch | ||
|
||
env: | ||
REGISTRY: ghcr.io | ||
REPOSITORY_NAME: ${{ github.repository }} | ||
|
||
jobs: | ||
build-and-push-image: | ||
runs-on: self-hosted | ||
timeout-minutes: 720 | ||
permissions: | ||
contents: read | ||
packages: write | ||
strategy: | ||
matrix: | ||
mysql_version: | ||
- 8.0.28 | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Set image name | ||
run: | | ||
echo "IMAGE_NAME=`echo ${REPOSITORY_NAME} | tr '[A-Z]' '[a-z]'`" >>${GITHUB_ENV} | ||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 | ||
with: | ||
context: . | ||
push: true | ||
build-args: MYSQL_VERSION=${{ matrix.mysql_version }} | ||
platforms: linux/amd64,linux/arm64 | ||
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.mysql_version }}-${{ github.sha }} | ||
labels: ${{ steps.meta.outputs.labels }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
FROM ubuntu:jammy | ||
|
||
ENV PATH /usr/local/mysql/bin:$PATH | ||
|
||
# install required packages | ||
# https://github.com/openssl/openssl#build-and-install | ||
# https://dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html | ||
RUN apt-get update \ | ||
&& apt-get install -y perl \ | ||
&& apt-get install -y wget cmake gcc g++ libncurses-dev libudev-dev dpkg-dev pkg-config bison \ | ||
&& apt-get clean \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# install libssl 1.1 | ||
# MySQLが3系に対応しておらず、jammyではlibssl-devは3系のみなので、ソースからインストールする | ||
# 以下のリンク先にあるバグチケットが解消されれば、libssl-devをインストールすることで解決可能 | ||
# https://bugs.mysql.com/bug.php?id=102405 | ||
# https://packages.ubuntu.com/jammy/libssl-dev | ||
ENV OPENSSL_VERSION 1.1.1o | ||
RUN cd /tmp \ | ||
&& wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ | ||
&& tar xvzf openssl-${OPENSSL_VERSION}.tar.gz \ | ||
&& cd openssl-${OPENSSL_VERSION} \ | ||
&& ./config \ | ||
&& make \ | ||
&& make install \ | ||
&& ldconfig | ||
|
||
ENV Q4M_PLUGIN q4m | ||
ARG MYSQL_VERSION | ||
|
||
# install mysql-build + q4m plugin installer, build mysql + q4m, remove workdir | ||
RUN cd /tmp \ | ||
&& wget -O q4m-master.tar.gz https://github.com/DeNA/q4m/archive/master.tar.gz \ | ||
&& tar xvzf q4m-master.tar.gz \ | ||
&& mv q4m-master /tmp/q4m \ | ||
&& wget -O mysql-build-master.tar.gz https://github.com/kamipo/mysql-build/archive/master.tar.gz \ | ||
&& tar xvzf mysql-build-master.tar.gz \ | ||
&& mv mysql-build-master /usr/local/mysql-build \ | ||
&& mv /tmp/q4m/docker/${Q4M_PLUGIN} /usr/local/mysql-build/share/mysql-build/plugins/${Q4M_PLUGIN} \ | ||
&& cd ~/ \ | ||
&& /usr/local/mysql-build/bin/mysql-build -v ${MYSQL_VERSION} /usr/local/mysql ${Q4M_PLUGIN} \ | ||
&& rm -rf /usr/local/mysql-build \ | ||
&& rm /tmp/*master.tar.gz | ||
|
||
# user, group | ||
RUN mkdir /var/lib/mysql \ | ||
&& groupadd mysql \ | ||
&& useradd -r -g mysql -s /bin/false mysql \ | ||
&& chown -R mysql:mysql /var/lib/mysql | ||
|
||
# setup mysql | ||
# COPY my.cnf /etc/mysql/my.cnf | ||
RUN mysqld --initialize-insecure --user=mysql \ | ||
&& mysql_ssl_rsa_setup \ | ||
&& mysqld --daemonize --skip-networking --user mysql --socket /tmp/mysql.sock \ | ||
&& echo "CREATE USER 'root'@'%'; GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; " | mysql -uroot -hlocalhost --socket /tmp/mysql.sock \ | ||
&& cat /usr/local/mysql/support-files/install-q4m.sql | mysql -uroot -hlocalhost --socket /tmp/mysql.sock \ | ||
&& mysqladmin shutdown -uroot --socket /tmp/mysql.sock | ||
|
||
EXPOSE 3306 | ||
ENTRYPOINT [ "mysqld", "--user=mysql" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
[mysqld] | ||
basedir = /usr/local/mysql | ||
datadir = /var/lib/mysql | ||
socket = /var/lib/mysql/mysql.sock |