mysql官方dockerfile

mysql的Dockerfile文件

FROM debian:stretch-slim    
# 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    
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*    
# add gosu for easy step-down from root    
ENV GOSU_VERSION 1.7    
RUN set -x \    
	&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \    
	&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \    
	&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \    
	&& export GNUPGHOME="$(mktemp -d)" \    
	&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \    
	&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \    
	&& gpgconf --kill all \    
	&& rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \    
	&& chmod +x /usr/local/bin/gosu \    
	&& gosu nobody true \    
	&& apt-get purge -y --auto-remove ca-certificates wget    
RUN mkdir /docker-entrypoint-initdb.d    
RUN apt-get update && apt-get install -y --no-install-recommends \    
# for MYSQL_RANDOM_ROOT_PASSWORD    
		pwgen \    
# for mysql_ssl_rsa_setup    
		openssl \    
# 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    
		perl \    
	&& rm -rf /var/lib/apt/lists/*    
RUN set -ex; \    
# gpg: key 5072E1F5: public key "MySQL Release Engineering <[email protected]>" imported    
	key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \    
	export GNUPGHOME="$(mktemp -d)"; \    
	gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \    
	gpg --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \    
	gpgconf --kill all; \    
	rm -rf "$GNUPGHOME"; \    
	apt-key list > /dev/null    
ENV MYSQL_MAJOR 5.7    
ENV MYSQL_VERSION 5.7.23-1debian9    
RUN echo "deb http://repo.mysql.com/apt/debian/ stretch mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list    
# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)    
# also, we set debconf keys to make APT a little quieter    
RUN { \    
		echo mysql-community-server mysql-community-server/data-dir select ''; \    
		echo mysql-community-server mysql-community-server/root-pass password ''; \    
		echo mysql-community-server mysql-community-server/re-root-pass password ''; \    
		echo mysql-community-server mysql-community-server/remove-test-db select false; \    
	} | debconf-set-selections \    
	&& apt-get update && apt-get install -y mysql-server="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* \    
	&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \    
	&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \    
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime    
	&& chmod 777 /var/run/mysqld \    
# comment out a few problematic configuration values    
	&& find /etc/mysql/ -name '*.cnf' -print0 \    
		| xargs -0 grep -lZE '^(bind-address|log)' \    
		| xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/' \    
# don't reverse lookup hostnames, they are usually another container    
	&& echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf    
VOLUME /var/lib/mysql    
COPY docker-entrypoint.sh /usr/local/bin/    
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat    
ENTRYPOINT ["docker-entrypoint.sh"]    
EXPOSE 3306 33060    
CMD ["mysqld"]


apt-get install 參數

apt-get install 是 ubuntu 下的軟件安裝命令。
sudo apt-get -y install: 
-y:yes,在命令行交互提示中,直接輸入 yes;
1. 使用 add-apt-repository 爲 apt-get 添加 PPA
比如爲安裝 emacs 需添加某 PPA(Personal Package Archives : Ubuntu):
sudo add-apt-repository ppa:ubuntu-elisp/ppa
sudo apt-get update
sudo apt-get install emacs-snapshot emacs-snapshot-el123
添加docker源:
$ sudo add-apt-repository \       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \       $(lsb_release -cs) \
       stable"$ sudo apt-get update
1
2
3
4
5
2. –no-install-recommends
–no-install-recommends參數來避免安裝非必須的文件,從而減小鏡像的體積:
3. -f:解決包依賴的問題
sudo apt-get -f install
4. apt-get upgrade 與 apt-get dist-upgrade
apt-get upgarde 和dist-upgrade的差別
二者的區別同樣在於對包的依賴關係的處理上:
upgrade:系統將現有的 Package 升級,如果有相依性的問題,而此相依性需要安裝其它新的Package或影響到其它Package的相依性時,此Package就不會被升級,會保留下來; 
一種相對穩妥保險的做法;不替用戶做更多的操作;
dist-upgrade: 
如果遇到依賴性問題,需要安裝新的Package(或移除舊的 package),就會試着去安裝/移除它.








set命令作用主要是顯示系統中已經存在的shell變量,以及設置shell變量的新變量值。使用set更改shell特性時,符號"+"和"-"的作用分別是打開和關閉指定的模式。set命令不能夠定義新的shell變量。如果要定義新的變量,可以使用declare命令以變量名=值的格式進行定義即可。

語法

set(選項)(參數)

選項

-a:標示已修改的變量,以供輸出至環境變量。
-b:使被中止的後臺程序立刻回報執行狀態。
-C:轉向所產生的文件無法覆蓋已存在的文件。
-d:Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d參數可取消。
-e:若指令傳回值不等於0,則立即退出shell。
-f:取消使用通配符。
-h:自動記錄函數的所在位置。
-H Shell:可利用"!"加<指令編號>的方式來執行history中記錄的指令。
-k:指令所給的參數都會被視爲此指令的環境變量。
-l:記錄for循環的變量名稱。
-m:使用監視模式。
-n:只讀取指令,而不實際執行。
-p:啓動優先順序模式。
-P:啓動-P參數後,執行指令時,會以實際的文件或目錄來取代符號連接。
-t:執行完隨後的指令,即退出shell。
-u:當執行時使用到未定義過的變量,則顯示錯誤信息。
-v:顯示shell所讀取的輸入值。
-x:執行指令後,會先顯示該指令及所下的參數。

參數

取消某個set曾啓動的參數。

實例

使用declare命令定義一個新的環境變量"mylove",並且將其值設置爲"Visual C++",輸入如下命令:

declare mylove='Visual C++'   #定義新環境變量

再使用set命令將新定義的變量輸出爲環境變量,輸入如下命令:

set -a mylove                 #設置爲環境變量

執行該命令後,將會新添加對應的環境變量。用戶可以使用env命令和grep命令分別顯示和搜索環境變量"mylove",輸入命令如下:

env | grep mylove             #顯示環境變量值

此時,該命令執行後,將輸出查詢到的環境變量值。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章