Skip to content

Instantly share code, notes, and snippets.

@mapk0y
Last active November 1, 2016 08:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mapk0y/3a2b24d10e395caf00bd276e09ddc7a3 to your computer and use it in GitHub Desktop.
Save mapk0y/3a2b24d10e395caf00bd276e09ddc7a3 to your computer and use it in GitHub Desktop.
docker の php イメージを使って環境変数を確認

Dockerfile で設定した ENV の場合

Dockerfile の構成、環境変数 HOGE を設定

[mapk0y@kona:~]$ cat Dockerfile 
FROM php:7.0-apache
ENV HOGE "hoge"

envhoge という名前のイメージを作成

[mapk0y@kona:~]$ docker build -t envhoge ./
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM php:7.0-apache
 ---> 3e8f05e5d76c
Step 2 : ENV HOGE "hoge"
 ---> Running in ee3c8f3b4b2b
 ---> 43e5fabe9f8a
Removing intermediate container ee3c8f3b4b2b
Successfully built 43e5fabe9f8a

作成したイメージで env コマンドを実行し、$HOGE があることを確認

[mapk0y@kona:~]$ docker run --rm envhoge env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=2008dce74304
PHPIZE_DEPS=autoconf 		file 		g++ 		gcc 		libc-dev 		make 		pkg-config 		re2c
PHP_INI_DIR=/usr/local/etc/php
APACHE_CONFDIR=/etc/apache2
APACHE_ENVVARS=/etc/apache2/envvars
PHP_EXTRA_BUILD_DEPS=apache2-dev
PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2
GPG_KEYS=1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763
PHP_VERSION=7.0.12
PHP_URL=https://secure.php.net/get/php-7.0.12.tar.xz/from/this/mirror
PHP_ASC_URL=https://secure.php.net/get/php-7.0.12.tar.xz.asc/from/this/mirror
PHP_SHA256=f3d6c49e1c242e5995dec15e503fde996c327eb86cd7ec45c690e93c971b83ff
PHP_MD5=bdcc4dbdac90c2a39422786653059f70
HOGE=hoge
HOME=/root

$HOGE を表示する php を用意して apache 越しにアクセス

  • docker オフィシャルの php:7.0-apache/var/www/html が DocumentRoot なので現在のディレクトリをそこにマウントしてコンテナに見せる
  • docker ps でイメージ名(desperate_austin)を取得
  • イメージ名から IPAddress を取得しそこにアクセス
[mapk0y@kona:~]$ cat index.php 
<?php
    echo getenv('HOGE');
[mapk0y@kona:~]$ docker run -d -v ${PWD}:/var/www/html envhoge
ed257771e6cc6b4b6e9506c9224c9873b92214feee18904f8c7e4b2b6de6d549
[mapk0y@kona:~]$ docker ps -l
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
ed257771e6cc        envhoge             "apache2-foreground"   12 seconds ago      Up 11 seconds       80/tcp              desperate_austin
[mapk0y@kona:~]$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' desperate_austin 
172.17.0.2
[mapk0y@kona:~]$ curl http://172.17.0.2/index.php
hoge[mapk0y@kona:~]$

# コンテナの掃除
[mapk0y@kona:~]$ docker stop desperate_austin 
desperate_austin
[mapk0y@kona:~]$ docker rm desperate_austin 
desperate_austin

念のため apache を経由しない場合も確認

[mapk0y@kona:~]$ docker run --rm envhoge php -r 'echo getenv("HOGE");'
hoge[mapk0y@kona:~]$

docker run で設定した ENV の場合

  • docker run の際に環境変数を設定できる
  • 設定方法は -e/--env FOO=bar-e/--env FOO(手元側の FOO が渡る)、--env-file file 等がある。
  • 今回は -e FOO=bar で試す。

env コマンドを実行し、$FOO があることを確認

[mapk0y@kona:~]$ docker run --rm -e FOO=bar php:7.0-apache env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=a5e163f8d2dc
FOO=bar
PHPIZE_DEPS=autoconf 		file 		g++ 		gcc 		libc-dev 		make 		pkg-config 		re2c
PHP_INI_DIR=/usr/local/etc/php
APACHE_CONFDIR=/etc/apache2
APACHE_ENVVARS=/etc/apache2/envvars
PHP_EXTRA_BUILD_DEPS=apache2-dev
PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2
GPG_KEYS=1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763
PHP_VERSION=7.0.12
PHP_URL=https://secure.php.net/get/php-7.0.12.tar.xz/from/this/mirror
PHP_ASC_URL=https://secure.php.net/get/php-7.0.12.tar.xz.asc/from/this/mirror
PHP_SHA256=f3d6c49e1c242e5995dec15e503fde996c327eb86cd7ec45c690e93c971b83ff
PHP_MD5=bdcc4dbdac90c2a39422786653059f70
HOME=/root

$FOO を表示する php を用意して apache 越しにアクセス

[mapk0y@kona:~]$ cat index.php 
<?php
    echo getenv('FOO');
[mapk0y@kona:~]$ docker run -d -e FOO=bar -v ${PWD}:/var/www/html php:7.0-apache
1f0d1fc09edbd7591aeb3fcccc2dfd3b9d64f549336c0e0fbb2b2053644fec7c
[mapk0y@kona:~]$ docker ps -l
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
1f0d1fc09edb        php:7.0-apache      "apache2-foreground"   3 seconds ago       Up 3 seconds        80/tcp              sick_leakey
[mapk0y@kona:~]$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sick_leakey
172.17.0.2
[mapk0y@kona:~]$ curl http://172.17.0.2/index.php
bar[mapk0y@kona:~]$

# コンテナの掃除
[mapk0y@kona:~]$ docker stop sick_leakey 
sick_leakey
[mapk0y@kona:~]$ docker rm sick_leakey 
sick_leakey

念のため apache を経由しない場合も確認

[mapk0y@kona:~]$ docker run --rm -e FOO=bar php:7.0-apache php -r 'echo getenv("FOO");'
bar[mapk0y@kona:~]$ 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment