LoginSignup
1
1

More than 5 years have passed since last update.

ローカルの PHP+Postgres な docker 環境を Azure VM にデプロイする

Posted at

インフラど素人のメモです。

手元に PHP と PostgreSQL(正確には PostGIS)の docker/docker-compose 環境があり、これをインターネットに公開したい(開発しているシステムを顧客にも試してもらいたい)。

Azure のクレジットが訳あって余ってるんで Azure VM を使います。

CoreOS という VMイメージ には最初から docker が入っているらしいので、 Azure の Virtual Machine から CoreOS を検索して stable なイメージを起動。ケチなのでスペックは 「Standard B1ms (1 vcpu 数、2 GB メモリ)」。
あと自動シャットダウンも付けといたほうが無難。とりあえず user/password でログインできるようにした。
あ、ポートも開けておこう。 HTTP/HTTPS/SSH くらい。Postgres に繋ぎたいなら 5432 も必要。

この VM には docker は入っているが docker-compose は入ってないので 次に、

にしたがって docker-compose をインストール。

さらに、このままだと docker-compose up をしたときに "Couldn't connect to Docker daemon at http+docker://localhost - is it running?" なんてエラーが出るので、

も実施。

次にローカルPCにある Dockerfiledocker-compose.yml やデータファイルを圧縮して VM に転送する。

にある通り、 scp ./docker.zip amay077@xx.xx.xxx.xxx:/home/amay077 のようなコマンドでアップロードできる。

今回使う docker-compose.yml はこんな感じ。

version: "3"

services:
  php:
    # image: php:5.6.31-apache
    build: ./php
    expose:
      - "80"
    ports:
      - "80:80"
    volumes:
      - ../php/html:/var/www/html
    command: php -S 0.0.0.0:80
    links:
      - db
  db:
    image: mdillon/postgis:9.5
    # build: ./db
    ports:
      - "5432:5432"
    volumes:
      - ../../share/sql:/var/sql
      - ../../share/postgresql/data:/var/lib/postgresql/data
    environment:
      - "POSTGRES_USER=postgres"
      - "POSTGRES_PASSWORD=xxxxxxxx"

相対パスの配置に気をつけて、ローカルと同じようなディレクトリ構成にする。

そして、 docker-compose up を実行! バックグラウンドで動かすなら docker-compose up -d
初回はイメージのダウンロードに時間がかかるが、以下のようなログが出て起動完了したっぽい(このログはローカルと同じだ)。

Creating network "docker_default" with the default driver
Creating docker_db_1 ... done
Creating docker_php_1 ... done
Attaching to docker_db_1, docker_php_1
db_1   | LOG:  database system was shut down at 2018-09-18 16:19:41 UTC
db_1   | LOG:  MultiXact member wraparound protections are now enabled
db_1   | LOG:  database system is ready to accept connections
db_1   | LOG:  autovacuum launcher started

外部からのルーティングとかよく分かってないけれど、とりあえず VM のグローバルIP で http アクセスしてみる。

…と、よく分からんが PHP のサイトが見られた。 docker-compose.yml の設定で 80 ポートは docker に流す、的な設定がしてあるんですかね。

とりあえず目的は果たせた。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1