Composeのその他の機能

ComposeコマンドをリモートのDockerホストに対して実施して、1つのホストから複数のホストにアプリを展開することができる

### 環境変数

version: '3.7'
services:
  web:
    image: ${DHUB}/c5env:${IMG_VER}
    container_name: c5env

その他の命令

version: '3.7'
services:
  python:
    image: alpine:3.10.3
    container_name: alpine
    command: ["tail", "-f", "/dev/null"]
    tty: true
    env_file: python.env
    stop_signal: SIGKILL
    network_mode: "none"

[Docker-compose] 基本

Composeの定義内でイメージが置かれるディレクトリとDockerfile名を指定すれば、docker-composeコマンドの発行時にDockerfileによるビルドも自動で実施する

$ tree
.
├── app
│   ├── Dockerfile
│   └── src
│   └── server.py
├── docker-compose.yml
└── web
├── Dockerfile
└── html
└── index.html

./web/Dockerfile

From nginx:1.17.5-alpine
COPY ./html/ /usr/share/nginx/html/
CMD["nginx", "-g", "daemon off;"]

./docker-compose.yml

version: '3.3'
services:
  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    ports:
    - 8081:80
  web:
    build:
      context: ./web
      dockerfile: Dockerfile
    image: c5dev1_nginx
    container_name: c5dev1_nginx
    ports:
    - 8080:80

build: でビルドする
image: がイメージ名
サービス名とイメージのリソースを置くディレクトリ名を統一する方が良い

$ sudo docker-compose build

bindで動作検証して、OKだったら、ビルドする

version: '3.7'
services:
  web:
    build:
      context: ./web
      dockerfile: dockerfile
    depends_on:
      - app
    ports:
      - 8080:80
    environment:
      APP_SERVER: http://app:80
  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    depends_on:
      - db
    environment:
      REDIS_HOST: db
      REDIS_PORT: 6379
      REDIS_DB: 0
  db:
    image: redis:5.0.6-alpine3.10
    volumes:
      - c5kvs_redis_volume:/data
volumes:
  c5kvs_redis_volume:
    driver: local

[Docker-compose] WordPressとMySQLを展開

docker-compose.local.yml

version: '3.3'
services:
  web:
    build:
      context: ./web
      dockerfile: Dockerfile
    ports:
    - 8080:80
    volumes:
    - ./web/html:/usr/share/nginx/html

/web/Dockerfile

From nginx:1.17.5-alpine
COPY ./html/ /usr/share/nginx/html/
CMD ["nginx", "-g", "daemon off;"]

/web/html/index.html

	<title>Document</title>
</head>
<body>
	<h1>hello</h1>
</body>

$ sudo docker-compose -f docker-compose.local.yml up -d –build

[Docker-compose] WordPressを起動する

docker-compose.yml

version: '3.3'
services:
  mysql:
    image: mysql:5.7.28
    restart: unless-stopped
    networks:
    - wp_net
    volumes:
    - mysql_volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress 
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password

  wordpress:
    image: wordpress:5.2.3-php7.3-apache
    restart: unless-stopped
    depends_on:
    - mysql
    networks:
    - wp_net
    ports:
    - 8080:80
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: password

networks:
  wp_net:
    driver: bridge
volumes:
  mysql_volume:
    driver: local

うおおおおおおおおおお
これはやばい

[Docker-compose] 入門

docker-compose.ymlで作成する

version: '3.3'
services:
  nginx:
    image: nginx:1.17.6-alpine
    ports:
    - 8080:80
    environment:
      MYENV: "hello compose"

k8sもymlで作成する
docker-compose up -d の「-d」はバックグラウンド実行

$ sudo docker-compose up -d
$ sudo docker-compose ps
Name Command State Ports
——————————————————————————–
c5_nginx_1 nginx -g daemon off; Up 0.0.0.0:8080->80/tcp,:::8080->80/tcp
$ sudo docker-compose down

なるほどー 入門になってないな…

S3のアクセス制限

– IAMグループを作成し、IAMグループに対しIAMポリシーを付けることで特定のフォルダしかアクセスできない様にする

ニャルほどー、これはエンドレスだわ…