---
# System prepended metadata

title: Docker
tags: [docker-compose, docker]

---

# Docker
###### tags: `docker` `docker-compose`

先附上dockerfile

```dockerfile=
FROM python:3.8-slim # 選擇要拉的image，預設的環境是ubuntu
RUN pip install --upgrade pip # run前置動作
WORKDIR /app # 選擇作業的資料夾，有順便創建的功能
COPY requirements.txt ./ # 複製本地端的資料到container
RUN pip install -r requirements.txt
COPY api ./
CMD ["python", "-u", "app.py"] # 執行程式
```

只要寫完dockerfile，接下來k8s也可以接著做下去了。


Docker-compose

直接上yaml
```yaml=
version: '3' # compose版本
services:
  proxy_api: # 命名
    build:
      context: .
      environment:
        - PROXY_REDIS_CONNECTION_STRING=redis://localhost:6379
    ports:
      - 5000:5000 #綁定container的port及外部環境的port 外:內
    restart: always
    network_mode: aotter_crawler_default # 建立在哪個docker網路上
```

docker-compose可以省掉原本docker的各種麻煩語法，直接在yaml裡面定義

只要run一個
```
$ docker-compose up -d --build
```
p.s.  -d是不顯示內部log，build是重新建立

就可以解決所有docker語法問題

詳細可見[這裡](https://docs.docker.com/compose/)

如果想從docker內container連接到localhost的話要這樣改
```
localhost > host.docker.internal
```

