2025年3月31日 星期一

在docker的container中,如果要連本機服務該怎麼處理

當然如果你偶實體IP可以直接使用,但如果你沒有固I,假設我要連mssql port 1276,首先可以考慮使用ngrok

ngrok tcp 1276

這樣就可以把服務讓外面來連,當然這是緩兵之計,重開機網址就會換了

今天我要講的是另外一招,可以讓容器直接連本機服務

直接把ip設定成host.docker.internal,如下面用php sqlsrv來連線

sqlsrv("host.docker.internal, 1276", [......])

就可以直接連到,注意,這招只適用於windows跟mac

linux上也不是不可以使用,只是似乎要特別設定dns解析,或者有另外的作法,這我們改天有用到在研究吧

2025年3月30日 星期日

如果我container想要docker服務一起動就開啟怎麼做

 給程式碼

// docker-compose.yml
version: "3"
services:
php:
image: namoshek/php-mssql:7.3-fpm
restart: unless-stopped # 關鍵就是這行
container_name: php
volumes:
- ./:/var/www/html
working_dir: /var/www/html
ports:
- "9000:9000"
environment:
- PHP_ENV=development
networks:
- app-network

nginx:
image: nginx:latest
restart: unless-stopped # 關鍵就是這行
container_name: nginx-proxy
ports:
- "80:80" # HTTP 端口
volumes:
- .:/var/www/html/ZHCC
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf # 自定義 Nginx 配置
working_dir: /var/www/html
depends_on:
- php
networks:
- app-network


networks:
app-network:
driver: bridge

這樣就可以在docker服務啟動後,自動把container跑起來喔,
restart還有其他設定,我記得有一個是always,但跟unless-stoped有什麼區別,有興趣可以自行研究

2025年1月6日 星期一

github actions可不可以寫funcion,試試看複合動作

就我知道github actions應該算腳本類的語法吧,在工作上遇到要連線vpn就要落落長一大堆語法,所幸問一下ai,有沒有類似function的用法,還真的有,做一下紀錄

# ./github/actions/vpn/action.yml
# 路径除了vpn其他都必须一样
name: vpn connect
description: 'vpn connect'
# description這裏不能省

inputs:
OVPN_CONFIG:
description: 'ovpn config'
required: true

# actions里面不能有env跟secrets只能透过with传入

runs:
using: "composite"
steps:
- name: Write OpenVPN config
shell: bash # shell这行必填
run: echo "${{ inputs.OVPN_CONFIG }}" > xxx.ovpn

- name: Install OpenVPN
shell: bash
run: sudo apt-get update && sudo apt-get install -y openvpn

- name: Configure OpenVPN
shell: bash
run: |
sudo openvpn --config cywang.ovpn &
sleep 10 # Wait for the VPN to establish connection
ps aux | grep openvpn
ip addr
ip route

這樣就寫好了,接著我們要來示範使用方式

jobs:
  deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
      # 因為要使用到repo裡面的檔案一定要有這行

- name: vpn connect
uses: ./.github/actions/vpn
        # 直接uses就可以使用,要注意路徑要正確
with:
OVPN_CONFIG: ${{ env.OVPN_CONFIG }}

以上就是這次的分享