Gitpod Env Settings & Tips Part 3

tags: yii gitpod

前情提要

延續前兩次的Gitpod和Docker Workflow介紹,這次補上環境變數三種設定方式,推薦使用第三種方式,使用docker-compose將環境變數的參數複寫原本Dockerfile的PHP_USER_ID設定。

知識點

  • docker images列出image id
  • docker inspect比對兩者環境變數的差異
  • dockerFile可以藉由args接收環境變數切換不同的版本
  • docker-compose config檢查是否環境變數設定正確
  • docker-compose build重新建立image

Build Flow

三種方法

法1:

  • 改DockerFile的Env

=> frontend/Dockerfile

1
2
3
4
5
6
7
8
9
FROM yiisoftware/yii2-php:7.2-apache
# FROM gitpod/workspace-full:latest

# Change document root for Apache
RUN sed -i -e 's|/app/web|/app/frontend/web|g' /etc/apache2/sites-available/000-default.conf

# Change PHP_USER_ID For Gitpod
ENV COMPOSER_ALLOW_SUPERUSER=1 \
PHP_USER_ID=33333

法2:

  • 使用docker-compose environment方法傳遞參數

=> docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
version: '3.2'

services:

frontend:
build:
dockerfile: Dockerfile
context: frontend
environment:
- COMPOSER_ALLOW_SUPERUSER=1
- PHP_USER_ID=33333

法3:(推薦作法)

  • 由docker-compose.yaml載入env檔案

=> env

1
2
3
## Apache
PHP_USER_ID=33333
COMPOSER_ALLOW_SUPERUSER=1

=> docker-compose.yml

1
2
3
4
5
6
7
8
9
10
version: '3.2'

services:

frontend:
build:
dockerfile: Dockerfile
context: frontend
env_file:
- .env

Reference

https://github.com/yiisoft/yii-base-web/issues/1

https://stackoverflow.com/questions/23836416/permission-issues-with-apache-inside-docker/35886387